home *** CD-ROM | disk | FTP | other *** search
/ Amiga CD-Sensation: Golden Games / Amiga CD-Sensation - Ausgabe 2 - Golden Games (1996)(GTI - Schatztruhe)(DE)[!].iso / Various / CoreWars / Anleitung.LZH / KapitelII < prev   
Text File  |  1987-12-26  |  89KB  |  1,969 lines

  1.  
  2.     ______________________________________________________________________
  3.    |                                                                      |
  4.    |            ANMERKUNG ZUR DISKETTENVERSION DER ANLEITUNG:             |
  5.    |                                                                      |
  6.    |  Die beiden Abbildungen, auf die im Abschnitt 2.6 und 2.8 zurückge-  | 
  7.    |  griffen wird, sind nur in der gedruckten Anleitung enthalten.  Ab-  |
  8.    |  bildung 1 stellt die Statusanzeige eines Kampfes dar, Abbildung 2   |
  9.    |  zeigt die Zeitlupenanzeige (Trace-Menupunkt).                       |
  10.    |______________________________________________________________________|
  11.  
  12.  
  13.  
  14.  
  15.  
  16.                  K a p i t e l    2 :    C o r e    W a r s
  17.                  __________________________________________
  18.  
  19.  
  20.  
  21.  
  22. 2.1 Starten und Installieren
  23. ____________________________
  24.  
  25.  
  26.  
  27. 2.1.1 Allgemeines
  28. -----------------
  29.  
  30. Dieses Programm ist Shareware. Es darf ausser für gewerbliche Zwecke
  31. frei kopiert und verbreitet werden. Der Preis für die Weitergabe darf
  32. den Betrag für die Diskette und die Kopierarbeit nicht überschreiten!
  33.  
  34. Das Programm darf nur weitergegeben werden, wenn mindestens die
  35. folgenden Dateien in einem Directory oder auf einer Diskette enthalten
  36. sind:
  37.  
  38. CoreWars
  39. System (Dir)
  40.      View
  41. LiesMich
  42. Beispiele (Dir)
  43.      Mice
  44.      Mausefalle
  45.      Gnom
  46.      Knirps
  47.      Chang
  48. Anleitung (Dir)
  49.      Einleitung
  50.      KapitelI
  51.      KapitelII
  52.      KapitelIII
  53.      Anhang
  54.  
  55. Wer das Programm benützt, sollte im Sinne des Shareware-Gedankens
  56. sFr.  30.-- (oder sFr.  33.-- ausserhalb der Schweiz in der jewei-
  57. ligen Landeswährung) an diese Adresse senden:
  58.  
  59.                          Unicorn  Systems
  60.                           Bernstrasse 67
  61.                          CH-4852 Rothrist
  62.  
  63. Er erhält dann die etwa 70 Seiten umfassende, deutsche Anleitung in
  64. TeX-Qualität auf Papier sowie die neuste Version des Programmes.  Er
  65. wird ausserdem registrierter Benützer und wird von zukünftigen Updates
  66. in Kenntnis gesetzt. 
  67.  
  68.  
  69. 2.1.2 Installierung
  70. -------------------
  71.  
  72. Auf Diskette:
  73.  
  74. Core Wars ist von uns in zwei Versionen in Umlauf gebracht worden. Die
  75. eine besteht aus einer autostartfähigen Diskette mit allen nötigen
  76. Verzeichnissen und Dateien.  Die zweite Version besteht aus einem
  77. einzigen Verzeichnis auf einer handelsüblichen Public Domain Diskette
  78. (Fred Fish, FAUG, Kickstart, AUGE 4000, AUGS u.s.w.).  Um aus den Files
  79. in einem solchen Verzeichnis eine autostartfähige Core Wars Diskette
  80. herzustellen, müssen verschiedene Vorarbeiten geleistet werden.  Auf
  81. einer lauffähigen Core Wars Diskette sollten die unten aufgeführten
  82. Verzeichnisse und Dateien vorhanden sein, wobei die mit einem Stern (*)
  83. gekennzeichneten Dateien vom Core Wars System unbedingt benötigt werden. 
  84. Am Einfachsten wird dazu eine original Workbench Diskette (ab Version
  85. 1.2) kopiert und auf der Kopie werden dann die überflüssigen Dateien
  86. gelöscht. 
  87.  
  88.  
  89. *CoreWars            Das Hauptprogramm.
  90. *LiesMich            Allgemeine Informationen über Core Wars. 
  91.  Redcode (Dir)       Für eigene Programme vorgesehen.
  92.  c (Dir)             CLI-Befehle und Utilities der Workbench
  93.      LoadIFF         Anzeigen von Bildern im IFF-Format (siehe Anleitung).
  94.      CorePic         Titelbild von CoreWars (nur bei Autostart sichtbar).
  95.  Beispiele (Dir)     Ein Verzeichnis mit einigen Programmbeispielen.
  96.      Mice            Siegerprogramm Welmeisterschaft 1986
  97.      Mausefalle      Schlägt Mice!
  98.      Gnom            \
  99.      Knirps           > weitere Beispielprogramme, siehe Anleitung.
  100.      Chang           /
  101. *System (Dir)        Einige Hilfsprogramme der Workbench.
  102.     *Einstellungen   Einstellungsdatei für den Core Wars Editor.
  103.     *View            Anzeigen von Textdateien (z.B. diesen Text).
  104. *Fonts (Dir)         Zeichensätze, die von Core Wars benötigt werden.
  105.     *Diamond.font    \
  106.     *Diamond (Dir)    > Zeichensatz 'Diamond 12'
  107.          *12         /
  108.  Anleitung (Dir)     Enthält Die Anleitung in Form von Textdateien.
  109.      Einleitung
  110.      KapitelI
  111.      KapitelII
  112.      KapitelIII
  113.      Anhang
  114. *libs                Betriebssystem: Funktionsbibliotheken.
  115.     *icon.library
  116.     *diskfont.library
  117.  
  118.  
  119. Auf Festplatte:
  120.  
  121. Das Programm "CoreWars" kann auf der Harddisk an einem beliebigen Platz
  122. untergebracht werden. Es benötigt allerdings die unter 2.1 mit einem
  123. Stern (*) bezeichneten Dateien in den entsprechenden Verzeichnissen.
  124.  
  125.  
  126. Starten von Core Wars:
  127.  
  128. Core Wars kann von der Workbench durch die Maus oder vom CLI aus durch
  129. den Befehl "run CoreWars" gestartet werden.
  130.  
  131.  
  132.  
  133. 2.2 Eine erste Anwendung
  134. ________________________
  135.  
  136.  
  137. Dieser und auch teilweise der nächste Abschnitt nehmen in der Anleitung
  138. eine Sonderstellung ein.  Um die ersten in Kapitel eins behandelten
  139. Beispielprogramme gegeneinander kämpfen zu lassen, müssen Sie sich hier
  140. ein Grundwissen in der Bedienung von Core Wars aneignen.  Wenn sie
  141. diesen Abschnitt durchgelesen haben, können Sie alle Kampfprogramme des
  142. ersten Kapitels laufen lassen.  Um aber alle Fähigkeiten des Core Wars
  143. Programmes ausnützen zu können, sollten Sie nach dem ersten Kapitel
  144. wieder hier mit dem Lesen weiterfahren. 
  145.  
  146.  
  147. 2.2.1 Die Menüs
  148. ---------------
  149.  
  150. Nachdem Core Wars gestartet ist, erscheint in der Mitte des hellgrauen
  151. Hauptbildschirmes ein Textkasten.  Um ihn verschwinden zu lassen, können
  152. Sie einfach mit der Maus irgendwo in diesen Kasten hineinklicken.  Nun
  153. ist die Bahn frei für den ersten Kampf zwischen zwei Redcode-Programmen. 
  154. Am oberen Rand des Bilschirmes sehen Sie einen Titelbalken mit dem Namen
  155. des Programmes.  Drücken Sie nun die rechte Maustaste und sehen Sie sich
  156. die Menüpunkte an.  Ganz links haben wir unter "Amiga" den Menüpunkt
  157. "Core Wars", hinter dem sich einige Infos zum Programm verstecken. 
  158.  
  159. Der zweite Menustreifen enthält unter anderen die Punkte "Editor",
  160. "Assembler" und "Kampf".  Mit dem Editor können Sie die Programmtexte
  161. schreiben und verändern.  Diese Texte werden dann mit dem Assembler in
  162. einen für MARS ausführbaren Code übersetzt (assembliert) und
  163. schliesslich können diese übersetzten Programme mit dem Menüpunkt
  164. "Kampf" gegeneinander antreten. 
  165.  
  166. Hier sind die drei Punkte einer Redcode-Programmentwicklung aufgeführt:
  167.  
  168. 1.   Das Programm wird wie ein normaler Text geschrieben und auf Diskette
  169.      abgespeichert.  Dieser Text wird auch "Quelltext" oder "Quelldatei"
  170.      genannt. 
  171.  
  172. 2.   Der Quelltext wird von einem Assembler in einen von MARS
  173.      ausführbaren Code, den sogenannten "Objektcode" oder die "Objektdatei"
  174.      verwandelt und dieser Code wird wiederum auf Diskette gespeichert. 
  175.  
  176. 3.   Zwei dieser Objektdateien werden schliesslich von MARS eingelesen
  177.      und liefern sich dann ein Duell im Speicher von MARS. 
  178.  
  179.  
  180. 2.2.2 Der erste Schritt: Ein Programm schreiben
  181. -----------------------------------------------
  182.  
  183. Der Editor dient dazu, Programmmtexte zu schreiben und schon bestehende
  184. Programmtexte zu verändern (editieren).  Anhand eines Beispieles sehen
  185. Sie, wie ein schon bestehender Programmtext eingelesen und verändert
  186. werden kann. 
  187.  
  188. Bewegen Sie die Maus auf den Menüpunkt "Editor" und lassen Sie den
  189. rechten Mausknopf los.  Augenblicklich erscheint ein neues Fenster und
  190. in diesem Fenster heischt ein weisses Rechteck um ihre Aufmerksamkeit. 
  191. Dieses Rechteck wird Requester (englisch für Rückfrage) genannt und
  192. dient dazu, den Namen eines Programmtextes einzugeben.  Klicken Sie mit
  193. der Maus einmal in den schmalen, dunkleren Balken in diesem Rechteck. 
  194. Sie sehen, dass am linken Ende des Balkens ein kleines weisses Viereck
  195. erscheint.  Dieses Viereck, der Cursor, zeigt Ihnen, an welcher Stelle
  196. eines Textes sich der nächste Druck auf eine Taste auswirkt.  Tippen Sie
  197. nun den Namen "Beispiele/Gnom" ein und klicken Sie mit der Maus in das
  198. grüne Kästchen, das mit OK gekennzeichnet ist.  Der Computer sucht jetzt
  199. im internen Laufwerk (df0:) nach einem Verzeichnis namens "Beispiele"
  200. und dort nach einer Textdatei "Gnom". 
  201.  
  202. Wenn Sie den Namen richtig eingegeben haben und wenn die verlangte Datei
  203. wirklich auf der Diskette vorhanden war, wird der Programmtext nun
  204. eingelesen.  Der Requester verschwindet und der Text wird angezeigt. 
  205. Wieder sehen Sie einen Cursor in Form eines kleinen weissen Vierecks
  206. ganz links oben im Editorfenster.  Mit den vier Pfeiltasten können Sie
  207. den Cursor in alle vier Himmelsrichtungen in Einzelschritten
  208. verschieben.  Sobald Sie eine Buchstabentaste betätigen, erscheint das
  209. entsprechende Zeichen an der Stelle, auf die der Cursor zeigt, das
  210. Zeichen wird so in den Text eingefügt.  Wenn sich unter dem Cursor schon
  211. ein Zeichen befand, werden dieses und alle noch in derselben Zeile
  212. stehenden Zeichen nach rechts verschoben.  
  213.  
  214. Eine andere Möglichkeit, den Cursor zu verschieben, besteht durch die
  215. Maus.  Wenn Sie mit dem Mauszeiger auf eine beliebige Position im
  216. angezeigten Text fahren und dann den linken Mausknopf drücken, wird der
  217. Cursor unter den Mauszeiger gesetzt.  Sehr oft ist dies der einfachste
  218. Weg, den Cursor auf ein bestimmtes Wort im Programmtext zu
  219. positionieren. 
  220.  
  221. Beim Redcode Editor handelt es sich um einen sogenannten "Full Screen -
  222. Editor".  Das bedeutet, dass das Editorfenster nur einen Ausschnitt des
  223. gesamten Textes anzeigt, der bis zu vierhundert Zeilen lang sein darf. 
  224. Probieren Sie folgendes aus: Zuerst laden Sie mit dem Menupunkt
  225. "Einlesen" die Quelldatei "Gnom" im Verzeichnis "Beispiele" in den
  226. Textspeicher.  Hängen Sie an diesen Text anschliessend einen anderen
  227. Quelltext (z.B.  Mice) mit dem Menupunkt "Einfügen" an und wiederholen
  228. den Vorgang einige Male.  Verschieben Sie nun den Cursor durch
  229. wiederholtes Betätigen der Pfeiltasten nach unten.  Wenn Sie am unteren
  230. Rand des Bildschirmes angekommen sind und Sie versuchen, den Cursor über
  231. diesen Rand hinauszubewegen, so rollt der ganze Inhalt der Anzeige
  232. Zeilenw eise durch das Editorfenster.  Stellen Sie sich das Ganze so
  233. vor, als würden Sie über eine Seite eines Buches ein Blatt weisses
  234. Papier mit einem kleinen rechteckigen Ausschnitt legen und dieses dann
  235. nach oben oder unten verschieben.  Diese Verschiebung erfolgt bei
  236. unserem Editor eben durch die Cursortasten oder, wie Sie später noch
  237. sehen werden, durch verschiedene Kommandos, die es erlauben, sich unter
  238. Anderem auch Seitenweise durch den Text zu bewegen. 
  239.  
  240. Weitere gundlegende möglichkeiten, einen Programmtext zu verändern, sind
  241. die Tasten "Delete" und "Backspace".  Diese dienen dazu, ein Zeichen
  242. links oder direkt unter dem Cursor zu löschen.  "Delete" (beim Amiga
  243. 2000 und 500 die grosse Taste gleich links von der Help-Taste, beim
  244. Amiga 1000 die Taste ganz rechts oben auf dem Zeichenblock) löscht das
  245. Zeichen, das unmittelbar unter dem Cursor steht.  Wenn sich weiter
  246. rechts mehrere Zeichen befinden, rücken alle weiteren um eine Stelle
  247. nach links zum Cursor nach .  "Backspace" ist bei allen Amiga-Modellen
  248. die Taste, die mit dem nach links weisenden Pfeil gekennzeichnet ist. 
  249. Beim Amiga 2000 und 500 befindet sie sich links von der Delete-Taste,
  250. beim Amiga 1000 ist es die grosse Taste ganz rechts oben.  Probieren Sie
  251. diese Tasten ruhig aus, indem Sie das Programm "Gnom" nach Ihrem
  252. Gutdünken verändern.  Wenn Sie eine neue Zeile eines Textes eingetippt
  253. haben, können Sie die RETURN-Taste drücken.  Der Cursor steht dann am
  254. Beginn der nächsten Zeile.  Wenn sich der Cursor bei m RETURN mitten in
  255. einer Zeile befand, werden die restlichen Zeichen auf die nächste Zeile
  256. übernommen.  Diesen Vorgang können Sie durch drücken der
  257. "Backspace"-Taste wieder rückgängig machen. 
  258.  
  259. Eine kleine Exkursion mit der Maus im Menubalken fördert noch einige
  260. Menupunkte mehr zutage.  Mit deren Hilfe können Sie bestimmte Wörter in
  261. einem Text suchen und durch andere ersetzen, ganze Blöcke von Text
  262. löschen und an einer anderen Ste lle wieder einfügen, die
  263. Funktionstasten mit vielbenützten Wörtern belegen und vieles mehr. 
  264. Alle diese Möglichkeiten werden ausführlich im Abschnitt 2.3 (Schreiben
  265. eines Kampfprogrammes) behandelt. 
  266.  
  267. Natürlich sollten Sie noch wissen, wie Sie ein verändertes oder neu
  268. geschriebenes Kampfprogramm wieder auf Diskette zurückspeichern können. 
  269. Im Menubalken finden Sie ganz links den Menustreifen "System" und in
  270. diesem die Menupunkte "Abspeichern" und "Abspeichern als...".  Der
  271. erste Menupunkt dient dazu, den Programmtext unter dem gleichen Namen,
  272. mit dem er eingelesen wurde, wieder auf Diskette zu schreiben.  Aber
  273. Vorsicht: Die alte Version des Programmtextes auf der Diskette mit
  274. diesem Namen wird dabei überschrieben und geht somit verloren. 
  275.  
  276. Der zweite Menupunkt, "Abspeichern als...", lässt das Abspeichern eines
  277. Programmes unter einem neuen Namen zu.  Wählen Sie diesen Menupunkt
  278. probehalber einmal an.  Wie beim Starten des Editors erscheint wieder
  279. ein Rückfragekasten, der Sie um einen Dateinam en bittet.  Klicken Sie
  280. wieder in den Textbalken und geben Sie einen neuen Namen ein, z.  B. 
  281. "Beispiele/MeinGnom".  Im Verzeichnis "Beispiele" auf der internen
  282. Diskette befindet sich nun eine neue Textdatei mit diesem Namen.  Auch
  283. sie kann wieder eingelesen, verändert und abgespeichert werden. 
  284.  
  285. Noch eine Bemerkung zum Editor: Sie können durch ihn beliebige
  286. Programmtexte verändern, also auch alle Redcode Quelldateien, die im
  287. Verzeichnis "Beispiele" vorhanden sind.  Wir haben vorhin ein solches
  288. Beispielprogramm eingelesen: "Gnom".  Wenn Sie wie emp fohlen einige
  289. Experimente angestellt haben, sollten Sie den "Gnom" auf keinen Fall
  290. wieder unter dem gleichen Namen abspeichern, weil sonst das
  291. ursprüngliche (und funktionsfähige) Programm verlorengeht. 
  292.  
  293. Wenn Sie den Editor nach getaner Arbeit wieder verlassen wollen, wählen
  294. Sie im Menustreifen "System" den Punkt "Abbrechen" an.  Der Menubalken
  295. des Editors wird wieder durch den des Core Wars Programmes ersetzt und
  296. der Bildschirm erstrahlt in seinem gewohnten Grau. 
  297.  
  298.  
  299. 2.2.3 Der zweite Schritt: Einen Programmtext assemblieren
  300. ---------------------------------------------------------
  301.  
  302. Während der Lektüre des ersten Kapitels werden Sie schon Ihre ersten
  303. Kampfprogramme schreiben.  Um diese dann auch gegeneinander kämpfen zu
  304. lassen, müssen sie in einer für das MARS verständlichen Form vorliegen -
  305. die Programmtexte müssen assembliert oder übersetzt werden.  Unser
  306. Beispiel "Gnom" liegt zwar schon in assemblierter Form vor, aber wir
  307. werden den Vorgang jetzt nochmals nachvollziehen. 
  308.  
  309. Wählen Sie im Menubalken von Core Wars unter "Action" den Menupunkt
  310. "Assembler" an.  Ein Requester ähnlich dem, der Sie schon beim Editor
  311. kennengelernt haben, fragt nach dem Namen des Programmtextes.  Klicken
  312. Sie wie gehabt mit der Maus in den schmalen Textbalken und geben Sie
  313. "Beispiele/Gnom" ein.  Jetzt können Sie entweder mit der Maus in das
  314. grüne OK-Kästchen (auch Gadget genannt) klicken oder einfach die
  315. Return-Taste betätigen.  Wenn der Text auf der Diskette gefunden wurde,
  316. erscheinen in kurzen Abständen Kommentare in Form von Textzeilen auf dem
  317. Bildschirm.  Diese Zeilen teilen Ihnen mit, was der Assembler im
  318. Augenblick mit dem Programmtext anstellt und sie können zur Fehlersuche
  319. in einem eigenen Programm recht hilfreich sein. 
  320.  
  321. Es wird vor allem bei Ihren ersten eigenen Programmen selten vorkommen,
  322. dass Ihr Programmtext gleich auf Anhieb fehlerfrei übersetzt wird.  Wenn
  323. der Assembler ein Programm nicht übersetzen kann, wird der Vorgang der
  324. Assemblierens sofort abgebrochen und in der Mitte des Bildschirmes wird
  325. ein Textkasten angezeigt, der Ihnen beschreibt, in welcher Zeile des
  326. Programmes welcher Fehler aufgetreten ist.  In diesem Fall bleibt nur
  327. noch eins: Editor starten und den Fehler korrigieren.  Hilfestellung bei
  328. der Fehlersuche leistet Ihnen der Abschnitt 2.9, "Fehlermeldungen des
  329. Assemblers". 
  330.  
  331. Wenn der Programmtext erfolgreich übersetzt wurde, verlangt wiederum ein
  332. Requester die Eingabe eines Namens, unter dem der auf MARS lauffähige
  333. Programmcode auf Diskette gespeichert werden soll.  Haben Sie es
  334. bemerkt? Der beim Einlesen des Programmtextes verwendete Namen bleibt
  335. erhalten und an den ursprünglichen Namen wurde die Endung '.prg'
  336. angehängt.  Diese Endung dient dazu, einen Programmtext von einem
  337. lauffähigen Kampfprogramm, dem Objektcode, zu unterscheiden.  Sie können
  338. natürlich einen ganz anderen Namen für das übersetzte Programm
  339. verwendet, indem Sie einfach den angebotenen Namen verändern.  So ist
  340. auch die Endung '.prg' nicht zwingend, Sie können beispielsweise ihre
  341. Objektdateien alle mit der Endung '.obj' abspeichern, um sie zu
  342. unterscheiden.  Klicken Sie nun mit der Maus in das grüne OK-Kästchen,
  343. damit das übersetzte Programm auf die Diskette geschrieben wird. 
  344.  
  345.  
  346. 2.2.4 Der erste Kampf
  347. ---------------------
  348.  
  349. Die übersetzten Programme müssen nun ihre Feuerprobe bestehen: können
  350. sie sich im direkten Kampf gegen andere Redcodeprogramme behaupten? Die
  351. Antwort erhalten Sie durch das Herz des Core Wars Programmes, MARS. 
  352.  
  353. Wir werden als erstes zwei typische Redcodeprogramme gegeneinander
  354. antreten lassen: "Gnom" und "Knirps".  Schalten Sie dazu die Optionen
  355. "Trace" (Zeitlupe) und "Status" (verschiedene Statusanzeigen) aus, weil
  356. diese den Kampf zwischen den Programmen unnöti g in die Länge ziehen
  357. würden.  Dies erreichen Sie, indem Sie im Menustreifen "Optionen" die
  358. Menupunkte "Trace" und "Status" je einmal anwählen.  Dadurch
  359. verschwinden die Haken, die vor den Menupunkten standen und anzeigten,
  360. dass die beiden Optionen eingesch altet waren.  Die Option "Grafik"
  361. sollte aber aktiviert bleiben, weil sie den gesamten MARS-Speicher auf
  362. einmal auf dem Bildschirm darstellt. 
  363.  
  364. Wenn Sie dies erledigt haben, können Sie im Menustreifen "Action" den
  365. Punkt "Kampf" anwählen.  In der Mitte des Bildschirmes erscheint ein
  366. grosser Requester mit zwei Textbalken.  Geben Sie in diese beiden Balken
  367. je einen der Programmnamen ein, in den ersten "Beispiele/Gnom.prg" und
  368. in den Zweiten "Beispiele/Knirps.prg".  Anschliessend klicken Sie mit
  369. der Maus in das grüne OK-Kästchen rechts unten im Requester, um die
  370. Eingaben abzuschliessen und den Kampf zu beginnen.
  371.  
  372. Die zwei Kampfprogramme werden eingelesen und auf dem Bildschirm tritt
  373. die Grafikanzeige in Aktion.  Sie besteht aus einem grossen, anfänglich
  374. schwarzen Fenster mit dem Titel "Core Wars - Grafik".  Die schwarze
  375. Fläche dieses Fensters stellt den gesamten MARS-Speicher von 8000 Zellen
  376. auf einmal dar.  Jede Zelle wird durch einen kleinen, länglichen Punkt
  377. in diesem Fenster repräsentiert.  An den letzten Punkt der untersten
  378. Zeile des Grafikfensters schliesst sich in Gedanken der erste Punkt der
  379. obersten Zeile an, analog der ringförmigen Struktur des MARS
  380. Speicherfeldes.  Die Punkte können vier verschiedene Farben annehmen,
  381. die zeigen, was mit der entsprechenden Speicherzelle im Augenblick
  382. geschieht.  Diese Farben sind rot, grün, hellrot und hellgrün.  Sie
  383. werden es schon erraten haben: Rote und grüne Farbtöne stehen jeweils
  384. für ein Programm.  Links und rechts oben auf dem Bildschirm stehen
  385. übrigens die Namen der Programme in ihrer Farbe, in der sie in der
  386. Speichergrafik erscheinen. Falls sie nur 512 KByte Speicher haben, kann
  387. es vorkommen, dass die Namen nicht hingeschrieben werden. Für diesen
  388. Fall ist es wichtig zu wissen, dass das im oberen Textbalken des 
  389. Requesters eingegebene Programm die grünen Farbtöne hat, das zweite
  390. also die roten.
  391.     
  392. Ein roter Punkt auf der Anzeige bedeutet, dass ein Programmbefehl des
  393. roten (rechten) Programmes diese Speicherzelle verändert hat.  Dies kann
  394. durch einen der Redcode-Befehle MOV, ADD, SUB oder DJN geschehen.  Ein
  395. hellroter Punkt bezeichnet die Programmzei len, die schon von einem
  396. Programmzeiger bearbeitet worden sind.  Gleiches gilt auch für das grüne
  397. Programm, dessen Namen auf der linken Seite des Bildschirmes angezeigt
  398. wird.  So können Sie unterscheiden, welche Zellen von Ihrem Programm
  399. verändert wurden und wo sich der Programmzeiger gerade befindet.  Es ist
  400. faszinierend, einem solchen Kampf zweier Programme zuzusehen.  Durch die
  401. visuelle Umsetzung des Geschehens im Speicher kann man den Verlauf der
  402. Schlacht hautnah miterleben.  Vor dem schwarzen Hintergrund der noch
  403. unveränderten Speicherzellen wälzt sich "Knirps", einen hellroten
  404. Streifen von bearbeiteten Zellen hinterlassend, mit hoher
  405. Geschwindigkeit durch den Speicher.  Gleichzeitig beginnt "Gnom" mit der
  406. systematischen Bombardierung des Spielfeldes mit DAT 0 - Bomben.  Wer
  407. wird den Kampf gewinnen? Wenn "Gnom" mit seinem Granatfeuer "Knirps"
  408. erreichen kann, bevor er selbst von "Knirps" überrollt wird, ist das
  409. Duell zu seinen Gunsten entschieden.  Sollte umgekehrt "Gnom" von
  410. "Knirps" zuerst getroffen werden, stehen die Chancen gut für "Knirps",
  411. der auf diese Weise ein Unentschieden herausholen kann.  Damit haben Sie
  412. diese Einführung ins Core Wars System erfolgreich gemeistert und können
  413. mit dem Lesen im ersten Kapitel weiterfahren.  Scheuen Sie sich nicht,
  414. Core Wars auf Herz und Nieren auszuprobieren, wann immer Sie ein neues
  415. Kampfprogramm testen wollen. 
  416.  
  417.  
  418.  
  419.  
  420. 2.3 Schreiben eines Kampfprogrammes
  421. ___________________________________
  422.  
  423.  
  424.  
  425. In diesem Abschnitt werden zwei verschiedene Themen behandelt: Wir
  426. machen Sie zum Einen mit der Bedienung des Core Wars Editors vertraut
  427. und wir zeigen Ihnen zum Andern, welche Grundsätze Sie beachten müssen,
  428. wenn Sie ein Redcodeprogramm schreiben wollen.  Im Gegensatz zu
  429. Abschnitt 2.2 ("Eine erste Anwendung"), das nur einen groben Ueberblick
  430. zu Core Wars bot, werden ab jetzt alle Funktionen und Möglichkeiten des
  431. Systems erschöpfend beschrieben. 
  432.  
  433.  
  434. 2.3.1 Der Editor
  435. ----------------
  436.  
  437. Der Redcode Editor wird vom Core Wars Programm aus durch den Menupunkt
  438. "Editor" im Streifen "Action" aufgerufen.  Er ist dazu vorgesehen, den
  439. Programmtext eines Redcodeprogrammes einfach und schnell zu erstellen. 
  440. Dennoch bietet dieser Editor eine Fülle von nützlichen Funktionen,
  441. angefangen vom Einlesen und Abspeichern von Text bis zur Belegung von
  442. Funktionstasten mit beliebigen Floskeln.  Alle diese Funktionen können
  443. sowohl mit der Maus durch die Menustreifen als auch durch spezielle
  444. Tastenkombinationen aufgerufen werden.  Die folgenden Absätze führen Sie
  445. zunächst durch die einfachsten Grundlagen das Editors, um dann nach und
  446. nach auch die komplizierteren Möglichkeiten zu beleuchten. 
  447.  
  448.  
  449. 2.3.2 Bildschirmaufbau des Editors
  450. ----------------------------------
  451.  
  452. Das Hauptgeschehen im Editor spielt sich im grossen, fast den ganzen
  453. Bildschirm umfassenden Textfenster ab.  Dort wird der eingelesene Text
  454. angezeigt und dort können Sie Ihre Programme eingeben.  Von diesem
  455. Textfenster wird durch eine dünne Linie eine einzelne Zeile abgetrennt,
  456. die Statuszeile.  In dieser Zeile werden verschiedene Meldungen des
  457. Editors angezeigt.  Wenn Sie eine Funktion falsch anwenden, erscheint
  458. dort eine entsprechende Fehlermeldung.  Die Statuszeile dient ebenfalls
  459. zur Eingabe von einfachen Zahlenwerten, die der Editor benötigt: Ein
  460. Beispiel ist die Grösse des Tabulatorsprunges, die Sie ändern können. 
  461. Normalerweise wird in der Statuszeile jedoch immer der Name der gerade
  462. bearbeiteten Quelldatei angezeigt. 
  463.  
  464.  
  465. 2.3.3 Bewegen im Text
  466. ---------------------
  467.  
  468. Die einfachsten Möglichkeiten, sich mit dem Editor durch einen Text zu
  469. bewegen, haben Sie schon kennengelernt: Die Cursortasten dienen dazu,
  470. jeweils um ein Zeichen oder eine Zeile nach links, rechts, oben oder
  471. unten zu hüpfen.  Der Redcode Editor bietet jedoch noch mehr
  472. Steuerfunktionen, die alle bei der Behandlung der Menustreifen etwas
  473. weiter unten erklärt werden. 
  474.  
  475.  
  476. 2.3.4 Die Menustreifen
  477. ----------------------
  478.  
  479. Nach dem Aufrufen des Editors werden die Menustreifen des Core Wars
  480. Hauptprogrammes durch diejenigen des Editors ersetzt.  Die folgenden
  481. Menustreifen werden aktiv und können mit der Maus angewählt werden:
  482.  
  483.      SYSTEM         Alle Operationen, die sich auf Diskette oder den
  484.                     ganzen Programmtext beziehen.
  485.      EDITIEREN        Die Mehrzahl der Kommandos, durch die sich der 
  486.                     Programmtext verändern lässt.
  487.      REDCODE        Redcode-Spezifische Funktionen.
  488.      BEWEGEN        Alle Kommandos, die es erlauben, sich im Text zu 
  489.                     bewegen und ihn auf dem Bildschirm anzuzeigen.
  490.      SUCHEN         Funktionen, mit denen sich nach bestimmten Wörtern 
  491.                     oder Sätzen im Text suchen lässt.
  492.      SPEZIAL        Einige weitere Funktionen, bei denen es 
  493.                     schwerfällt, sie in den vorangegangenen 
  494.                     Sammelbegriffen einzuordnen.
  495.  
  496. Es folgt nun eine genaue Beschreibung jedes Menupunktes dieser
  497. Menustreifen.  Die Ueberschrift der einzelnen Absätze entspricht dem
  498. Namen des Streifens, gefolgt von einem Schrägstrich und dem Namen des
  499. Menupunktes.  Hinter dem Titel folgt die Tastenkombination, mit der die
  500. Funktion ebenfalls aufrufbar ist.  Die Tasten werden mit folgenden
  501. Kürzeln bezeichnet:
  502.  
  503. o    ESC            Escape-Taste. Diese Taste braucht im Gegensatz zu 
  504.                     den anderen Steuertasten nicht gleichzeitig mit
  505.                     der Buchstabentaste gedrückt zu werden. Als 
  506.                     Gedankenstütze erscheint in der Statuszeile die
  507.                     Meldung "Befehlsmodus".
  508. o    AMIGA          Die rechte Amiga-Taste, gleich rechts neben der 
  509.                     Leerschlag-Taste.
  510. o    SHIFT          Die Shift- oder Zweitfunktionstaste. Die Amiga-
  511.                     und die Shift-Tasten müssen gleichzeitig mit dem
  512.                     entsprechenden Buchstaben oder Pfeil gedrückt
  513.                     werden.
  514. o    TAB            Die Tabulatortaste. Sie liegt im linken oberen
  515.                     Teil der Tastatur gleich unterhalb der Escape-Taste.
  516. o    <u>            Pfeil nach unten.
  517. o    <o>            Pfeil nach oben.
  518. o    <l>            Pfeil nach links.
  519. o    <r>            Pfeil nach rechts.
  520. o    a...z          Die Zeichentasten der Tastatur klein...
  521. o    A...Z          oder gross (mit der Shift-Taste gleichzeitig).
  522.     
  523. Lesen Sie die Erklärungen der Reihe nach durch und führen Sie die
  524. aufgeführten Menupunkte gleich aus.  Wenn Sie später während der Arbeit
  525. mit dem Editor bei der einen oder anderen Funktion nicht mehr wissen,
  526. wie sie angewendet wird, können Sie die benötigten Informationen hier
  527. sehr leicht finden. 
  528.  
  529.  
  530. System/Einlesen (AMIGA r)
  531. -------------------------
  532.  
  533. Liest eine Quelldatei von Diskette, Festplatte oder RAM-Disk in den
  534. Editorspeicher ein.  Wenn sich schon ein Text im Editor befindet, so
  535. wird dieser durch den eingelesenen Text überschrieben.  Der Name der
  536. Datei kann durch einen Textkasten, der auf dem Bildschirm erscheint,
  537. eingegeben werden.  Nach der Eingabe muss entweder die Return-Taste
  538. gedrückt oder eines der beiden Antwortkästchen mit der Maus angeklickt
  539. werden: OK = Einlesen oder ABBRUCH = Abbrechen des Vorgangs.  Nach einem
  540. Abbruch ist der alte Quell text unverändert im Editorspeicher vorhanden. 
  541.  
  542.  
  543. System/Abspeichern (AMIGA s)
  544. ----------------------------
  545.  
  546. Der Text im Editorspeicher wird unter dem aktuellen Namen in den
  547. Massenspeicher (Diskette, Festplatte oder RAM-Disk) zurückgespeichert. 
  548. Eine alte Datei mit dem gleichen Namen wird dabei durch den neuen Text
  549. überschrieben.  Der aktuelle Name wird normalerweise in der Statuszeile
  550. laufend angezeigt. 
  551.  
  552.  
  553. System/Abspeichern als (AMIGA v)
  554. --------------------------------
  555.  
  556. Schreibt den Text, der sich im Editorspeicher befindet, unter einem
  557. neuen Namen auf den Massenspeicher.  Der Name kann durch den bekannten
  558. Eingabekasten gewählt werden.  Der Vorgang kann natürlich wieder durch
  559. Anklicken von ABBRUCH abgebrochen oder durch Anklicken von OK bestätigt
  560. werden.  Wenn sich eine Datei mit dem gleichen Namen, den Sie eingegeben
  561. haben, schon auf der Diskette befindet, wird diese durch den neuen Text
  562. überschrieben. 
  563.  
  564.  
  565. System/Einstellungen l. (AMIGA l)
  566. ---------------------------------
  567.  
  568. Der Redcode Editor bietet die Möglichkeit, bestimmte Einstellungen des
  569. Editors auf Diskette zu speichern und wieder einzulesen.  Diese
  570. Einstellungen sind:
  571.  
  572. a)   Der Tabulatorsprung, also die Anzahl der Zeichen, die übersprungen 
  573.      werden, wenn die Tabulatortaste gedrückt wird.
  574. b)   Die Unterscheidung von Gross/Kleinschrift beim Suchen von Wörtern.
  575. c)   Das Aufblitzen des Bildschirms, wenn über das 66-ste Zeichen 
  576.      hinweggeschrieben wird.
  577. d)   Alle Makros, die Sie selbst eingegeben haben. Was Makros sind und 
  578.      wie Sie diese verändern können, erfahren Sie bei der Funktion 
  579.      "Spezial/Makros eingeben".
  580.  
  581. Alle diese Einstellungen können Sie nach Ihrem Geschmack verändern und
  582. dann auf Diskette abspeichern.  Wenn Sie den Editor ein anderes Mal
  583. wieder starten, können Sie Ihre Einstellungen schnell wieder von der
  584. Diskette einlesen, um sich in Ihren bevorzugten Modi zu befinden. 
  585.  
  586. Bei dieser Funktion steht das kleine "l" für "lesen", es werden also
  587. Einstellungen eingelesen.  Sie können den Namen der Einstellungen wie
  588. beim Einlesen einer normalen Textdatei durch den Eingabekasten wählen. 
  589.  
  590. Wenn der Editor zum ersten Mal aufgerufen wird, versucht er, eine Datei
  591. mit Standardeinstellungen einzulesen.  Diese Datei muss im Verzeichnis
  592. "System" mit dem Namen "Einstellungen" auf der Core Wars Diskette
  593. vorhanden sein.  Sie können also Ihre eigenen Einstellungen unter dem
  594. Namen ":System/Einstellungen" abspeichern.  Von diesem Zeitpunkt an
  595. werden bei jedem Neustart des Core Wars Programmes Ihre bevorzugten
  596. Einstellungen automatisch eingelesen. 
  597.  
  598.  
  599. System/Einstellungen s. (AMIGA e)
  600. ---------------------------------
  601.  
  602. Hier werden die Einstellungen auf Diskette gesichert (s = sichern).  Der
  603. Editor verlangt wiederum einen Namen, unter dem die Einstellungen
  604. abgespeichert werden können. 
  605.  
  606. Wir empfehlen, dass Sie den oder die Namen ihrer Einstellungen so
  607. wählen, dass er nicht mit dem einer normalen Quelldatei eines
  608. Redcode-Programmes verwechselt werden kann.  Ein Beispiel wäre, für
  609. Einstellungen immer die Endung ".MOD" für Modus am Namen anzuhängen. 
  610.  
  611.  
  612. System/Einfügen (AMIGA i)
  613. -------------------------
  614.  
  615. Gleich wie bei der Funktion "System/Einlesen" wird hier eine Quelldatei
  616. von Diskette in den Editorspeicher eingelesen.  Ein schon im Editor
  617. vorhandener Quelltext geht jedoch nicht verloren, sondern der neue Text
  618. wird an der Position des Cursors in den alten eingefügt.  Auf diese
  619. Weise können Sie mehrere kleine Programme zu einem grösseren
  620. zusammenfassen.  Beispiel für ein grosses Programm, das eigentlich aus
  621. mehreren kleinen aufgebaut wurde, ist der "Fallensteller", der in
  622. Kapitel 3.2 näher erklärt wird. 
  623.  
  624.  
  625. System/Name ändern (AMIGA a)
  626. ----------------------------
  627.  
  628. Sie können hier den Namen einer bereits eingelesenen oder neu
  629. geschriebenen Datei ändern.  Der neue Name wird wie immer durch einen
  630. Eingabekasten gewählt und erscheint darauf in der Statuszeile des
  631. Editors. 
  632.  
  633.  
  634. System/Nochmals laden (AMIGA n)
  635. -------------------------------
  636.  
  637. Wenn Sie nach vielen Aenderungen eines Quelltextes merken, dass die
  638. ursprüngliche Version doch um einiges besser war, können Sie mit dieser
  639. Funktion die alte Quelldatei nochmals von Diskette einlesen.  Beachten
  640. Sie jedoch, dass alle Veränderungen des Text es im Editorspeicher dabei
  641. verloren gehen. 
  642.  
  643.  
  644. System/Abbrechen (AMIGA q)
  645. --------------------------
  646.  
  647. Nichts geheimnisvolles: Der Editor wird beendet und Sie befinden sich
  648. wieder im Hauptprogramm von Core Wars. Wenn der Editor später wieder
  649. aufgerufen wird, ist der zuletzt editierte Programmtext noch vorhanden.
  650.  
  651.  
  652. Editieren/Marke setzen (AMIGA m)
  653. --------------------------------
  654.  
  655. Wie viele Textverarbeitungen bietet auch der Redcode Editor verschiedene
  656. Funktionen an, mit deren Hilfe beliebige Textblöcke ausgeschnitten und
  657. an anderer Stelle wieder in den Text eingefügt werden können.  Diese
  658. Funktionen benötigen die Position und die Grösse des Blockes, der
  659. bearbeitet werden soll.  Wir haben dieses Problem so gelöst, dass wir
  660. den Block durch zwei Punkte begrenzen, die an beliebiger Position im
  661. Text stehen können.  Der eine dieser Punkte ist die augenblickliche
  662. Cursorposition, der andere Punkt ist die Marke.  Sehen wir uns den
  663. folgenden Ausschnitt aus einem Redcode-Quelltext an, um die Bedeutung
  664. des Cursors und der Marke zu verdeutlichen:
  665.  
  666.                     DAT 0          ; Zeiger auf Quelle
  667.                     DAT 99         ; Zeiger auf Ziel, 100 Zellen
  668.           start     MOV @-2, @-1   ; Quelle zum Ziel kopieren
  669.                     CMP -3, #9     ; Ist das ganze Programm kopiert?
  670.                     JMP ende       ; Ja: Schleife beenden
  671.                     ADD #1, -5     ; sonst die beiden Zeiger
  672.                     ADD #1, -5     ; inkrementieren
  673.                     JMP start      ; Schleife wiederholen
  674.           ende      MOV #99, 93    ; Programmkopie beenden
  675.                     JMP 93         ; und dorthin springen.
  676.  
  677. Der Cursor ist auf dem "i" des Wortes "Zeiger" in der zweiten Zeile
  678. positioniert, die Marke steht auf dem "n" des Wortes "ende" in der
  679. fünften Zeile.  Der Block, der durch diese zwei Punkte begrenzt ist,
  680. sieht so aus:
  681.  
  682. iger auf Ziel, 100 Zellen
  683.           start     MOV @-2, @-1   ; Quelle zum Ziel kopieren
  684.                     CMP -3, #9     ; Ist das ganze Programm kopiert?
  685.             JMP e
  686.  
  687. Dabei ist es unwichtig, ob der Cursor oder die Marke den Beginn des
  688. Blockes kennzeichnet.  Auch wenn die Marke auf dem "i" und der Cursor
  689. auf dem "n" gelegen hätte, wäre der Inhalt des Blockes derselbe
  690. geblieben. 
  691.  
  692. Alle Blockfunktionen beziehen sich auf den ganzen Block inklusive des
  693. Zeichens, auf dem die obere der beiden Markierungen steht.  Der Redcode
  694. Editor unterstützt diese Manipulationen mit Blöcken:
  695.  
  696.  
  697. Editieren/Schneiden (AMIGA x)
  698. -----------------------------
  699.  
  700. Legt den durch Marke/Cursor bezeichneten Textblock im Puffer ab und
  701. löscht anschliessend diesen Block aus dem Text.  Der alte Inhalt des
  702. Puffers geht verloren, weil er durch den neuen Block ersetzt wird. 
  703.  
  704.  
  705. Editieren/Löschen (AMIGA d)
  706. ---------------------------
  707.  
  708. Löscht den durch Marke/Cursor bezeichneten Textblock aus dem
  709. Editorspeicher.  Der Puffer wird nicht verändert. 
  710.  
  711.  
  712. Editieren/Kopieren (AMIGA c)
  713. ----------------------------
  714.  
  715. Kopiert den durch Marke/Cursor bezeichneten Textblock in den Puffer. 
  716. Der aktuelle Text wird nicht beeinflusst, der alte Inhalt der Puffers
  717. wird jedoch überschrieben. 
  718.  
  719.  
  720. Editieren/Einfügen (AMIGA p)
  721. ----------------------------
  722.  
  723. Der gesamte Puffer wird an der durch den Cursor bestimmten Position im
  724. Text eingefügt.  Alle folgenden Textzeilen werden um entsprechend viele
  725. Zeilen nach unten verschoben. 
  726.  
  727. Wenn ein neuer Text eingelesen wird, wird der Editorspeicher
  728. überschrieben.  Die Daten, die im Puffer stehen, werden jedoch erhalten
  729. und können weiterverwendet werden.  Sie können so zum Beispiel ein
  730. Programm schreiben und durch "kopieren" von Zeit zu Zeit im Puffer
  731. ablegen.  Wenn Sie nach einigen Veränderungen dann merken, dass die
  732. zuletzt im Puffer abgelegte Version des Programmes doch etwas besser
  733. war, können Sie den aktuellen Text löschen (nicht schneiden!) und mit
  734. "einfügen" den Quelltext im Puffer wie der hervorholen. 
  735.  
  736. Inzwischen sollte die Bedeutung von "Marke setzen" etwas
  737. offensichtlicher sein: An der Cursorposition wird die Marke gesetzt. 
  738. Die Marke ist jedoch auf dem Bildschirm im Gegensatz zum Cursor nicht
  739. sichtbar.  Sie sollten sich deshalb immer im Klaren darüber sein, an
  740. welcher Position sie das letzte Mal die Marke gesetzt haben.  Nach einem
  741. Neustart von Core Wars und dem Editor zeigt die Marke automatisch auf
  742. das erste Zeichen der ersten Zeile.  Es ist wichtig, dies zu wissen,
  743. weil Sie sonst unbeabsichtigt grössere Teile des Quelltextes löschen
  744. könnten. 
  745.  
  746.  
  747. Editieren/Text neu (ESC c)
  748. --------------------------
  749.  
  750. Löscht den gesamten Text aus dem Editorspeicher.  Der Puffer wird nicht
  751. beeinflusst und der Name der Quelldatei sowie alle Einstellungen bleiben
  752. ebenfalls erhalten.  Um die unbeabsichtigte Löschung eines Textes zu
  753. verhindern, haben wir eine Sicherheitsabfrage eingebaut.  In der Mitte
  754. des Editorfensters erscheint ein weisser Textkasten mit der Frage, ob
  755. wirklich gelöscht werden soll.  Sie können hier den Vorgang abbrechen,
  756. indem Sie mit der Maus in das ABBRUCH-Kästchen klicken. 
  757.  
  758.  
  759. Editieren/Alles löschen (ESC r)
  760. -------------------------------
  761.  
  762. Wie bei "Text neu" wird auch hier der gesamte Text gelöscht.  Darüber
  763. hinaus werden alle Einstellungen auf die Standardwerte gesetzt und der
  764. Puffer wird ebenfalls gelöscht.  Auch hier findet zuvor eine
  765. Sicherheitsabfrage nach dem gleichen Prinzip wie bei " Text neu" statt. 
  766.  
  767.  
  768. Editieren/Löschen Ende (ESC e)
  769. ------------------------------
  770.  
  771. Von der aktuellen Cursorposition bis zum Ende des Textes wird alles
  772. gelöscht, wobei der Puffer nicht verändert wird.  Diese Funktion ist
  773. jedoch mit Vorsicht zu geniessen, weil keine Sicherheitsabfrage
  774. vorgenommen wird. 
  775.  
  776.  
  777. Editieren/Löschen Anfang (ESC a)
  778. --------------------------------
  779.  
  780. Der Text wird vom Beginn bis zur aktuellen Cursorposition gelöscht. 
  781. Alles weitere ist gleich wie bei "Löschen Ende". 
  782.  
  783.  
  784. Editieren/Zeile löschen (ESC k)
  785. -------------------------------
  786.  
  787. Die Zeile, in der sich der Cursor befindet, wird ganz gelöscht.  Alle
  788. nachfolgenden Zeilen des Textes rücken um eine Stelle nach oben. 
  789.  
  790.  
  791. Editieren/Lösch. ab Cursor (ESC l)
  792. ----------------------------------
  793.  
  794. Von der aktuellen Cursorposition bis zum Ende der Zeile werden alle
  795. Zeichen gelöscht.  Die folgenden Zeilen werden nicht verschoben, der
  796. Platz der gelöschten Zeichen bleibt erhalten. 
  797.  
  798.  
  799. Editieren/nächstes Wort l. (AMIGA o)
  800. ------------------------------------
  801.  
  802. Das nächste Wort, das in seiner ganzen Länge rechts vom Cursor liegt,
  803. wird aus dem Text gelöscht. 
  804.  
  805.  
  806. Editieren/voriges Wort l. (AMIGA k) 
  807. -----------------------------------
  808.  
  809. Das nächste Wort, das noch ganz links des Cursors liegt, wird aus dem
  810. Text gelöscht. 
  811.  
  812.  
  813. Editieren/Wort gross (AMIGA g)
  814. ------------------------------
  815.  
  816. Das Wort, in dem der Cursor positioniert ist, wird ganz in
  817. Grossbuchstaben geschrieben.  Buchstaben, die schon vorher gross
  818. geschrieben waren, bleiben unverändert.  Diese Funktion ist nützlich,
  819. wenn ein Redcode-Befehl aus Versehen klein geschrieben wurde und nun in
  820. Grossschrift dastehen sollte.  Wenn der Cursor beim Aufrufen der
  821. Funktion nicht innerhalb eines Wortes stand, wird der Text nicht
  822. verändert. 
  823.  
  824.  
  825. Redcode/DAT, MOV, ADD, SUB, JMP, JMZ, JMN, DJN, CMP, SPL (F1 ...)
  826. -----------------------------------------------------------------
  827.  
  828. Dies sind eigentlich ziemlich triviale, aber dennoch sehr nützliche
  829. Funktionen.  Sie tun nichts anderes, als die Zeichen des entsprechenden
  830. Befehles an der aktuellen Cursorposition in den Programmtext einzufügen. 
  831. Am Ende des eingesetzten Befehls wird noch ein Zwischenraum angehängt
  832. und der Cursor wird auf das folgende Zeichen gesetzt.  Alle diese
  833. Menupunkte können auch durch die Funktionstasten F1 bis F10 (die oberste
  834. Reihe der Tastatur) aufgerufen werden.  Dabei steht F1 für den Befehl
  835. "DAT", F2 für "MOV" und so weiter bis zu F10 für "SPL".  Mit dem
  836. Menupunkt "Makro Eingeben" kann die Belegung der Funktionstasten mit
  837. Wörtern beliebig verändert werden. 
  838.  
  839.  
  840. Redcode/Formatieren
  841. -------------------
  842.  
  843. Nach dem Aufruf wird der gesamte Quelltext im Editorspeicher nach einem
  844. bestimmten Schema formatiert.  Es werden alle Redcode-Befehle in
  845. Grosschrift umgewandelt und bündig untereinander geschrieben.  Alle
  846. Leerzeichen zwischen den Argumenten der Redcode-Befehle werden auf ein
  847. Komma mit einem folgenden Leerzeichen reduziert.  Die Kommentare werden
  848. gleich wie die Befehle untereinander ausgerichtet und in die richtige
  849. Spalte geschrieben.  Hier ist das Schema, nach dem die Zeilen formatiert
  850. werden:
  851.  
  852.  
  853. "Label Opcode Argument A, Argument B ; Kommentar" = Eine Zeile Quelltext.
  854.  
  855.  
  856. Label:              16 Zeichen
  857. Opcode:             4 Zeichen
  858. Argumente A + B:    19 Zeichen zusammen. Die Argumente müssen durch ein 
  859.                     Komma getrennt sein. An das Komma wird immer genau 
  860.                     ein Leerzeichen angehängt. Das Komma kann weggelassen
  861.                     werden, wenn nur ein Argument angegeben wird.
  862. Kommentar:          38 Zeichen. Alle überschüssigen Zeichen werden 
  863.                     abgeschnitten und gehen verloren.
  864.  
  865. Durch diese Formatier-Funktion wird das Schreiben eines
  866. Redcode-Programmes sehr vereinfacht.  Es müssen keine festen Abstände
  867. eingehalten werden, die Befehle können klein geschrieben werden und die
  868. Kommentare können gleich anschliessend an die Argumente getippt werden. 
  869. Eine der wenigen Bedingungen für eine richtige Formatierung ist, dass
  870. Sie einen Redcode-Befehl nicht in der vordersten Spalte einer Zeile
  871. beginnen dürfen.  Wörter, die am linken Rand einer Zeile anfangen,
  872. werden als Labels angesehen.  Lassen Sie deshalb mindestens ein
  873. Leerzeichen stehen, bevor Sie das Befehlswort schreiben.  Gleiches gilt
  874. für die Trennung zwischen Befehlen und Argumenten, auch hier ist
  875. mindestens ein Leerzeichen nötig. 
  876.  
  877.  
  878. Redcode/Syntax prüfen
  879. ---------------------
  880.  
  881. Dies ist eine der speziell auf das Schreiben von Redcode Programmen
  882. zugeschnittenen Funktionen dieses Editors.  Die Funktion überprüft
  883. beginnend mit der ersten Zeile des Programmtextes im Editorspeicher den
  884. Aufbau des Redcode-Programmes auf Syntaxfehler.  Folgendes wird
  885. kontrolliert:
  886.  
  887.      o    Die Befehle müssen mit Grossbuchstaben geschrieben sein.
  888.      o    Jede Zeile ausser den reinen Kommentarzeilen muss genau einen 
  889.           gültigen Befehl enthalten.
  890.      o    Nach den Argumenten dürfen ausser den Kommentaren keine 
  891.           Zeichen mehr folgen.
  892.      o    Jedes Label darf nur einmal definiert werden (oder mit 
  893.           anderen Worten am linken Rand der Zeile stehen).
  894.      o    Die Anzahl der Argumente für jeden Befehl muss stimmen.
  895.      o    Die Adressierung der Argumente muss erlaubt sein (siehe 
  896.           Befehlsliste in Abschnitt 4 des ersten Kapitels).
  897.  
  898. Sobald ein Fehler auftritt, wird der Cursor auf die entsprechende Stelle
  899. im Text gesetzt und in der Statuszeile wird die Art des Fehlers
  900. angezeigt.  Sie können nun den Fehler korrigieren und danach erneut die
  901. Funktion "Syntax prüfen" aufrufen.  Wenn Sie auf diese Weise einen
  902. Quelltext durchgearbeitet haben, sollte eigentlich keiner der üblichen
  903. Syntaxfehler mehr im Programm sein.  Natürlich ist es möglich, dass sich
  904. noch logische Fehler in Ihrem Quelltext verbergen.  Diese können Sie
  905. dann erst nach dem Assemblieren durch einen Probelauf mit den "Trace"-
  906. und "Status"- Optionen entdecken (siehe Abschnitte 2.6 bis 2.8). 
  907.  
  908. Vor dem Aufruf von "Syntax prüfen" sollte das Programm üblicherweise mit
  909. "Formatieren" etwas auf Vordermann gebracht werden.  Die
  910. offensichtlichsten Fehler findet man nämlich meistens schon dann, wenn
  911. ein Quelltext einigermassen geordnet aussieht.  Weitere Informationen
  912. zum Thema Fehlersuche können Sie den Abschnitten 2.9 und 2.10 entnehmen. 
  913.  
  914.  
  915. Bewegen/Textanfang (ESC <o>)
  916. ----------------------------
  917.  
  918. Alle Funktionen im Menustreifen "Bewegen" dienen dazu, den Cursor im
  919. Text zu positionieren.  Besondere Beachtung verdienen hier "vorige
  920. Seite" und "nächste Seite".  Diese Kommandos können nämlich auch durch
  921. einen Mausklick in den Titelbalken bzw.  in die Statuszeile des Editors
  922. augerufen werden.  Doch gehen wir die Menupunkte der Reihe nach durch:
  923. "Textanfang" bewegt den Cursor auf das erste Zeichen des Textes.  Das
  924. Editorfenster wird neu aufgebaut, wenn sich der Beginn des Textes nicht
  925. in der Anzeige befindet. 
  926.  
  927.  
  928. Bewegen/Textende (ESC <u>)
  929. --------------------------
  930.  
  931. Der Cursor wird auf das letzte Zeichen des Textes gesetzt.  Wiederum ist
  932. es möglich, dass der Bildschirm neu aufgebaut wird. 
  933.  
  934.  
  935. Bewegen/Zeile... (ESC g)
  936. ------------------------
  937.  
  938. Diese Funktion bewegt den Cursor auf den Beginn einer Zeile, die Sie
  939. durch ihre Nummer bestimmen können.  In der Statuszeile erscheint eine
  940. Aufforderung, die Nummer der Zeile einzugeben.  Wenn Sie eine Zahl
  941. verwenden, die auf eine Position ausserhalb des Textes weist, wird in
  942. der Statuszeile eine Fehlermeldung angezeigt und Sie befinden sich
  943. wieder im normalen Editorfenster.  Die Zahl kann mit den normalen
  944. Zahlentasten eingegeben und gegebenenfalls mit der "Backspace"-Taste
  945. korrigiert werden.  Die Eingabe der Zahl wird durch einen Druck auf die
  946. RETURN-Taste abgeschlossen. 
  947.  
  948.  
  949. Bewegen/Marke tauschen (ESC t)
  950. ------------------------------
  951.  
  952. Die aktuelle Cursorposition wird mit der Position der Marke (siehe
  953. Blockfunktionen, Menu "Editieren") vertauscht.  Eventuell wird dabei der
  954. Bildschirm neu aufgebaut, wenn die Marke ausserhalb des Editorfensters
  955. lag.  Die Marke zeigt anschliessend an die Stelle, an der sich zuvor der
  956. Cursor befand.  Denken Sie daran, dass die Marke nach einem Neustart des
  957. Systems immer auf das erste Zeichen der ersten Zeile zeigt. 
  958.  
  959.  
  960. Bewegen/nächste Seite (ESC n)
  961. -----------------------------
  962.  
  963. Im Editorfenster wird die nächste Seite des Textes angezeigt und der
  964. Cursor auf das erste Zeichen der untersten Bildschirmzeile gesetzt. 
  965. Wenn Sie am Ende des Editorspeichers angekommen sind, erscheint die
  966. letzte Textlinie auf der letzten Zeile des Bildschirms.  Diese Funktion
  967. kann auch dadurch aufgerufen werden, indem Sie mit der Maus in die
  968. Statuszeile des Editors klicken. 
  969.  
  970.  
  971. Bewegen/vorige Seite (ESC v)
  972. ----------------------------
  973.  
  974. Die vorhergehende Seite im Text wird im Editorfenster angezeigt.  Der
  975. Cursor erscheint auf dem ersten Zeichen der obersten Bildschirmzeile. 
  976. Analog zur Funktion "nächste Seite" wird beim Erreichen des Textbeginns
  977. die erste Linie des Textes in der obersten Bildschirmzeile angezeigt. 
  978. Auch hier kann die Funktion durch Klicken mit der Maus in den
  979. Titelbalken des Editorfensters aufgerufen werden. 
  980.  
  981.  
  982. Bewegen/nächstes Wort (SHIFT <r>)
  983. ---------------------------------
  984.  
  985. Der Cursor wird auf das erste Zeichen des nächsten, ganz rechts von der
  986. aktuellen Cursorposition stehenden Wortes bewegt.  Wenn auf der selben
  987. Zeile kein weiteres Wort mehr zu finden ist, springt der Cursor auf den
  988. Beginn der nächsten Linie. 
  989.  
  990.  
  991. Bewegen/voriges Wort (SHIFT <l>)
  992. --------------------------------
  993.  
  994. Hier wird der Cursor auf das letzte Zeichen des nächsten, ganz links von
  995. der aktuellen Cursorposition stehenden Wortes bewegt.  Der Cursor
  996. springt auf das Ende der vorhergehenden Linie, wenn auf der selben Zeile
  997. kein weiteres Wort mehr zu finden ist. 
  998.  
  999.  
  1000. Bewegen/nächste Zeile (<u>) und Bewegen/vorige Zeile (<o>)
  1001. ----------------------------------------------------------
  1002.  
  1003. Diese beiden Funktionen bewegen den Cursor auf die vorhergehende (weiter
  1004. oben stehende) bzw.  auf die nachfolgende (weiter unten stehende) Zeile. 
  1005. Die Spalte, in der sich der Cursor befindet, wird dabei nicht verändert. 
  1006.  
  1007.  
  1008. Bewegen/Zeilenende (ESC <r>) und Bewegen/Zeilenanfang (ESC <l>)
  1009. ---------------------------------------------------------------
  1010.  
  1011. Der Cursor wird entweder auf das erste oder das letzte Zeichen der
  1012. aktuellen Zeile gesetzt. 
  1013.  
  1014.  
  1015. Bewegen/Tabulator (TAB)
  1016. -----------------------
  1017.  
  1018. Der Cursor wird normalerweise um 16 Zeichen nach rechts verschoben. 
  1019. Wenn der Cursor über das Ende der Zeile hinauskommt, werden die
  1020. restlichen Zeichen mit Zwischenräumen aufgefüllt.  Die Tabulatortaste
  1021. findet beim Schreiben eines Redcode - Programmes verwendung, wenn ein
  1022. Befehlswort geschrieben werden soll.  Anstatt 16 Mal die Zwischenraum -
  1023. Taste zu drücken, kann einfach einmal der Tabulator batätigt werden. 
  1024. Die Anzahl der Zeichen des Tabulatorsprunges können Sie mit der Funktion
  1025. "Spezial/Tabulator" in weiten Grenzen selbst bestimmen. 
  1026.  
  1027.  
  1028. Bewegen/Cursor Home (ESC h) und Bewegen/Cursor uHome (ESC z)
  1029. ------------------------------------------------------------
  1030.  
  1031. Setzt den Cursor in die linke obere bzw.  die linke untere Ecke des
  1032. Editorfensters. 
  1033.  
  1034.  
  1035. Suchen/Vorw. suchen (ESC s)
  1036. ---------------------------
  1037.  
  1038. In diesem Menustreifen finden sich verschiedene Funktionen zum
  1039. Durchsuchen von Text.  Sie können mit deren Hilfe bestimmte Wörter
  1040. finden und wahlweise durch andere Begriffe ersetzen. 
  1041.  
  1042. "Vorw.  suchen" steht für "vorwärts suchen".  Nachdem Sie den Menupunkt
  1043. angewählt haben, können Sie einen Suchbegriff mit bis zu 77 Zeichen (die
  1044. Länge einer Zeile im Editor) eingeben.  Der Text wird dann beginnend bei
  1045. der aktuellen Cursorposition nach diesem Wort durchsucht.  Wenn eine
  1046. Stelle gefunden wird, die der Eingabe entspricht, wird der Cursor auf
  1047. das Ende des gefundenen Wortes gesetzt.  Wenn erfolglos gesucht wurde,
  1048. erscheint in der Statuszeile eine entsprechende Meldung und die Position
  1049. des Cursors bleibt unverändert.  In beiden Fällen befinden Sie sich
  1050. anschliessend wieder im normalen Eingabemodus des Editors. 
  1051.  
  1052.  
  1053. Suchen/Rückw. suchen (ESC b)
  1054. ----------------------------
  1055.  
  1056. Hier können Sie den Text in der umgekehrten Richtung nach einem Begriff
  1057. durchsuchen.  Die Eingabe erfolgt wie beim normalen Suchen, aber der
  1058. Cursor wird nach dem Auffinden eines Wortes an dessen Ende gesetzt. 
  1059.  
  1060.  
  1061. Suchen/Suchen, Ersetzen (ESC p)
  1062. -------------------------------
  1063.  
  1064. Mit dieser Funktion können Sie den Text nach einem Wort durchsuchen und
  1065. alle so gefundenen Wörter automatisch durch einen zweiten Begriff
  1066. ersetzen lassen.  Der Ersatzbegriff darf wiederum bis zu 77 Zeichen lang
  1067. sein und wird gleich wie der Suchbegriff ein gegeben.  Wenn die Suche
  1068. abgeschlossen ist, erscheint eine Meldung in der Statuszeile und der
  1069. Cursor bleibt auf dem zuletzt ersetzten Wort positioniert. 
  1070.  
  1071.  
  1072. Suchen/S. E. Fragen (ESC f)
  1073. ---------------------------
  1074.  
  1075. Eigentlich ist dies dieselbe Funktion wie "Suchen, Ersetzen".  Der
  1076. einzige Unterschied ist, dass hier vor jedem Ersetzen eine Rückfrage in
  1077. der Statuszeile gestellt wird.  Wenn Sie das neu gefundene Wort wirklich
  1078. ersetzen wollen, drücken Sie die Taste "J" für Ja, ansonsten die Taste
  1079. "N" für Nein.  In beiden Fällen wird die Suche nach dem nächsten Wort
  1080. fortgesetzt, bis nichts mehr gefunden wird. 
  1081.  
  1082.  
  1083. Suchen/gross/klein (ESC u)
  1084. --------------------------
  1085.  
  1086. Bei allen Suchfunktionen können Sie mit diesem Menupunkt wählen, ob
  1087. Gross- und Kleinbuchstaben unterschieden werden sollen oder nicht.  Wenn
  1088. der Haken vor dem Menupunkt gesetzt ist, werden Grossbuchstaben nicht
  1089. gleich bewertet wie Kleinbuchstaben.  Ein Beispiel: "Null" ist nicht
  1090. gleich "null", weil der erste Buchstabe einmal gross und einmal klein
  1091. vorkommt.  Wenn der Haken jedoch gelöscht wäre, würden die beiden Wörter
  1092. gleich behandelt werden.  Den Haken können Sie setzen bzw.  löschen,
  1093. indem Sie einfach den Menupunkt "gross/klein" einmal anwählen. 
  1094.  
  1095.  
  1096. Spezial/Tabulator (AMIGA t)
  1097. ---------------------------
  1098.  
  1099. Durch die Tabulatortaste kann um eine bestimmte Anzahl Zeichen im Text
  1100. vorwärts gesprungen werden.  Diese Weite des Tabulators nennen wir den
  1101. Tabulatorsprung, welcher im Redcode Editor frei wählbar ist.  Was
  1102. geschieht nun, wenn die Tabulatortaste gedrückt wird? Sollte sich der
  1103. Cursor mitten in einer schon geschriebenen Zeile befinden, verschiebt er
  1104. sich einfach um den Tabulatorsprung nach rechts.  Wenn sich die
  1105. Schreibposition aber schon am Ende einer Zeile befindet oder das
  1106. Zeilenende während des Sprunges erreicht, werden soviele Zwischenräume
  1107. angefügt, bis die Distanz des Sprunges erfüllt ist.  Der Cursor würde
  1108. sich in diesem Falle hinter dem letzten angehängten Leerzeichen
  1109. befinden.  Dieser Effekt ist beim Schreiben eines Redcode-Programmes
  1110. sehr nützlich, weil ja meistens nicht vor jeden Befehl eine Sprungmarke
  1111. zu stehen kommt.  Anstatt am Beginn jeder Zeile unzählige Male auf die
  1112. Leerschlagtaste zu hämmern, können Sie nun einfach den gewünschten
  1113. Tabulatorsprung einstellen (Standard ist 16 Zeichen) und fort an nur
  1114. noch die Tabulatortaste drücken. 
  1115.  
  1116. "Spezial/Tabulator" erlaubt es Ihnen, die Grösse Ihres eigenen
  1117. Tabulatorsprunges frei auszuwählen.  In der Statuszeile erscheint eine
  1118. Aufforderung zur Eingabe einer Zahl.  Sie stellt die Anzahl der
  1119. Zwischenräume dar, die beim Betätigen der Tabulatortaste übersprungen
  1120. werden.  Die Zahl sollte grösser als Null und kleiner als 32 sein, damit
  1121. Sie den Tabulator noch vernünftig verwenden zu können.  Das Eintippen
  1122. erfolgt wie bei der Funktion "Bewegen/Zeile..." mit den normalen
  1123. Zifferntasten, das Korrigieren von Fehleingaben ist wiederum durch die
  1124. "Backspace-Taste" möglich. 
  1125.  
  1126.  
  1127. Spezial/Makro eingeben (AMIGA u)
  1128. --------------------------------
  1129.  
  1130. Dies ist eine weitere leistungsfähige Einrichtung des Redcode Editors. 
  1131. Die Funktionstasten F1 bis F10 und Shift-F1 bis Shift-F10 (zwanzig
  1132. Tasten) sind frei mit Zeichenketten Ihrer Wahl belegbar.  Diese
  1133. Zeichenketten werden Makros genannt, ein Wort, das aus der griechischen
  1134. Vorsilbe "makr" für "gross" oder "mächtig" gebildet wurde.  Eine
  1135. Anwendung von einem Makro wäre zum Beispiel die Belegung der
  1136. Funktionstaste Shift-F1 mit einem Label, das Sie oft benützen.  Ein
  1137. Makro darf bis zu 77 Stellen lang sein und beliebige Zeichen enthalten. 
  1138.  
  1139. Wenn Sie die Funktion "Makro eingeben" starten, wird in der Statuszeile
  1140. eine Meldung ausgegeben, die das Betätigen einer der Funktionstasten
  1141. verlangt.  Dies ist die Taste, über die danach das Makro in den Text
  1142. eingefügt wird.  Danach kann genau wie bei der Wahl eines Dateinamens
  1143. beim Abspeichern die Zeichenkette des Makros eingetippt werden.  Beenden
  1144. Sie Ihre Eingabe schliesslich durch RETURN oder durch einen Klick in das
  1145. OK-Kästchen ab. 
  1146.  
  1147. Positionieren Sie den Cursor irgendwo im Text und drücken Sie die mit
  1148. dem Makro belegte Funktionstaste.  Die vorhin eingegebene Zeichenkette
  1149. wird in den Text eingefügt und der Cursor erscheint wieder am Schluss
  1150. des neuen Textes. 
  1151.  
  1152. Gewissermassen "von Haus aus" sind die Funktionstasten F1 bis F10 mit
  1153. den zehn Redcode-Befehlen belegt, aber Sie können natürlich auch diese
  1154. Makros wie oben beschrieben verändern.  Beachten Sie jedoch, dass dann
  1155. beim Anwählen einer der Befehlsfunktionen im "Redcode"-Menustreifen
  1156. nicht der aufgeführte Befehl, sondern Ihr nachträglich unter der
  1157. entsprechenden Funktionstaste abgelegtes Makro im Text eingefügt wird. 
  1158.  
  1159.  
  1160. Spezial/Standard
  1161. ----------------
  1162.  
  1163. Alle Einstellungen, die Sie verändert haben, werden durch die
  1164. Standardwerte ersetzt.  Eine Liste dieser Einstellungen finden Sie in
  1165. der Beschreibung zur Funktion "System/Einstellungen l." am Beginn dieses
  1166. Kapitels und im Anhang A.5. 
  1167.  
  1168.  
  1169. Spezial/Glocke
  1170. --------------
  1171.  
  1172. Wenn Sie das Core Wars Programm frisch gestartet haben, ist die Glocke
  1173. eingeschaltet.  Sie merken dies, wenn Sie beim Schreiben einer Textzeile
  1174. mit dem Cursor über das 66.  Zeichen hinauskommen: Bei jedem Tastendruck
  1175. blitzt der Bildschirm einmal kurz auf.  Diese Einrichtung dient dazu,
  1176. Sie darauf aufmerksam zu machen, dass Sie fast das Ende einer Zeile
  1177. erreicht haben.  Diese optische Glocke ist eingeschaltet, wenn der Haken
  1178. neben dem Menupunkt "Glocke" gesetzt ist.  Natürlich können Sie den
  1179. Bildschirmblitz auch ausschalten, indem Sie einfach einmal "Glocke"
  1180. anwählen.  Der Haken wird dann gelöscht und der Bildschirm beruhigt sich
  1181. wieder. 
  1182.  
  1183.  
  1184. Spezial/Status zeigen (ESC X)
  1185. -----------------------------
  1186.  
  1187. In der Statuszeile wird eine Meldung über den augenblicklichen Zustand
  1188. des Textes angezeigt: Die Zeile und die Spalte, in der sich der Cursor
  1189. befindet, Die Anzahl Bytes, die der Text umfasst (ein Byte ist ein
  1190. Zeichen), und die Anzahl Zeilen, über die sic h der Text erstreckt. 
  1191. Diese Statusmeldung wird auch angezeigt, wenn Sie den Cursor mit der
  1192. Maus in das Editorfenster setzen.  Beachten Sie, dass die
  1193. Tastenkombination nicht das normale kleine, sondern das grosse X
  1194. verlangt.  Drücken Sie also nach der Esc-Ta ste gleichzeitig die Shift-
  1195. und die x-Taste, um diese Funktion aufzurufen. 
  1196.  
  1197.  
  1198. Spezial/Zeit zeigen (ESC T)
  1199. ---------------------------
  1200.  
  1201. Hier wird in der Statuszeile die aktuelle Zeit und das Datum angezeigt. 
  1202. Auch diese Funktion verlangt wie "Status zeigen" beim Aufrufen über die
  1203. Tastatur das grosse T anstelle eines kleinen. 
  1204.  
  1205.  
  1206.  
  1207.  
  1208. 2.4 Assemblieren
  1209. ________________
  1210.  
  1211.  
  1212. Um einen Kampf zwischen zwei Redcode Programmen ausführen zu können,
  1213. müssen Sie die Quelltexte der Programme zuerst in einen von MARS
  1214. verständlichen Code übersetzen.  Diese Umwandlung besorgt der Assembler. 
  1215.  
  1216.  
  1217. 2.4.1 Bedienung
  1218. ---------------
  1219.  
  1220. Rufen Sie aus dem Menustreifen "Action" den "Assembler" auf.  Sie können
  1221. nun in einen Textrequester den Namen des zu übersetzenden Programmtextes
  1222. eingeben.  Nehmen wir an, Sie möchten das Programm "mice" assemblieren. 
  1223. Es befindet sich im Verzeichnis "Beispiele" der Startdiskette.  Deshalb
  1224. lautet der Pfadname "Beispiele/Mice".  Drücken Sie die Return-Taste oder
  1225. klicken Sie mit der Maus in das OK-Gadget, um den Assembler laufen zu
  1226. lassen. 
  1227.  
  1228. Auf dem Bildschirm erscheinen verschiedene Nachrichten, aus denen Sie
  1229. ersehen können, wann ein eventueller Fehler auftritt:
  1230.  
  1231. Kommentare löschen: Die Kommentare (wenn vorhanden) werden aus dem
  1232. Quelltext gelöscht.  Redcode-Befehle codieren: Alle verwendeten
  1233. Anweisungen werden gesucht und in Ihre entsprechenden Codes verwandelt. 
  1234. Symboltabelle erstellen: Die Symbole werden erfasst und durch die Werte,
  1235. die sie darstellen, ersetzt.  Zwischenräume löschen: Alle überflüssigen
  1236. Leerschläge zwischen Befehlen und Argumenten werden gelöscht.  Argumente
  1237. auflösen und berechnen: Alle Argumente werden durch eine Zahl mit dem
  1238. vorangestellten Adressierungsmodus ersetzt.  Startzeile bestimmen: Wenn
  1239. das Symbol "start" verwendet wurde, beginnt die Ausführung bei dieser
  1240. Zeile, sonst bei der ersten gültigen Programmzeile. 
  1241.  
  1242. Wenn die Assemblierung wegen einem Fehler im Quellcode abgebrochen
  1243. wurde, erscheint eine Fehlermeldung in einem Textkasten in der Mitte des
  1244. Bildschirmes.  Alle möglichen Meldungen sind im Abschnitt 2.9 dieses
  1245. Kapitels beschrieben. 
  1246.  
  1247. Nach einer erfolgreichen Assemblierung muss das ausführbare
  1248. Redcode-Programm noch auf Diskette zurückgespeichert werden.  Zu diesem
  1249. Zweck erscheint ein neuer Textrequester, in dem der Programmname mit der
  1250. zusätzlichen Endung ".prg" angezeigt wird.  Wenn Sie mit diesem Namen
  1251. einverstanden Sind, können Sie wieder die Return-Taste drücken oder mit
  1252. der Maus in das OK-Gadget klicken.  Sie können den vorgeschlagenen Namen
  1253. natürlich noch ändern, denken Sie aber daran, dass Sie Ihren
  1254. ausführbaren Programmen eine besondere Endung verpassen sollten.  Das
  1255. Assemblieren kann hier übrigens zum letzten Mal noch abgebrochen werden,
  1256. wenn Sie das STOP-Gadget des Textrequesters anwählen. 
  1257.  
  1258.  
  1259. 2.4.2 Regeln zum Assembler
  1260. --------------------------
  1261.  
  1262. Hier folgt eine zusammenfassung aller Regeln zum Aufbau eines
  1263. Quelltextes, den der Assembler verstehen und übersetzen kann. 
  1264.  
  1265.  
  1266. Symbole:
  1267.  
  1268. Ein Symbol ist ein Wort, das stellvertretend für einen Zahlenwert
  1269. verwendet wird.  Ein Symbol wird definiert, indem es an den Beginn einer
  1270. Befehlszeile des Quelltextes gesetzt wird.  Wenn Das Symbol in der
  1271. ersten Zeile definiert wird, besitzt es den Wert Null, in der zweiten
  1272. Zeile den Wert 1 und so weiter bis zum Ende des Programmes.  Jedes
  1273. Symbol muss genau einmal definiert werden.  Ein Symbol muss als erstes
  1274. Zeichen einen Buchstaben von a - z oder A - Z enthalten, danach dürfen
  1275. sowohl Zahlen als auch Buchstaben folgen.  Ein Symbol darf nicht länger
  1276. als 40 Zeichen sein und es dürfen nicht mehr als 30 Symbole in einem
  1277. Quelltext definiert werden. 
  1278.  
  1279.  
  1280. Argumente:
  1281.  
  1282. Alle Argumente eines Befehls müssen angegeben werden.  Ein Argument darf
  1283. eine Zahl, ein Symbol, ein Ausdruck aus Symbolen oder das *-Zeichen
  1284. sein.  Jedes Argument kann mit einem der vier Zeichen #, $, @, <
  1285. adressiert werden (siehe auch Kapitel eins, Abschnitt 1.9).  Ein
  1286. Ausdruck darf aus Zahlen, Symbolen sowie den Operatoren + und - für eine
  1287. Addition bzw.  Subtraktion bestehen.  Alle anderen Zeichen (Klammern,
  1288. Multiplikation, Division) sind nicht erlaubt.  Zwischen Symbolen und
  1289. Zahlen müssen, zwischen Symbolen und Operatoren können Leerzeichen
  1290. enthalten sein. 
  1291.  
  1292.  
  1293. Kommentare:
  1294.  
  1295. Um ein Redcode-Programm ausser dem Assembler auch einem Menschen
  1296. verständlich zu machen, können Kommentare verwendet werden.  Ein
  1297. Kommentar kann am Ende einer Befehlszeile stehen oder er kann eine ganze
  1298. Zeile des Quelltextes belegen.  Jeder Kommentar beginnt mit einem
  1299. ;-Zeichen (Semikolon) und hört mit dem Zeilenende auf.  Falls schon das
  1300. erste Zeichen einer Redcode-Zeile ein Semikolon ist, wird die ganze
  1301. Zeile als Kommentar interpretiert.  Wenn dies nicht der Fall ist, nimmt
  1302. der Assembler an, dass eine normale Befehlszeile folgt.  Wenn eine Zeile
  1303. nur Leerzeichen oder gar keine Zeichen enthält, wird sie übersprungen. 
  1304.  
  1305.  
  1306. Programmgrösse:
  1307.  
  1308. Der Assembler kann bis zu 400 Zeilen eines Quelltextes einlesen und
  1309. übersetzen.  Dies entspricht der Kapazität des Editors und sollte in den
  1310. meisten Fällen mehr als genug sein. 
  1311.  
  1312.  
  1313.  
  1314.  
  1315. 2.5 Der Kampf
  1316. _____________
  1317.  
  1318.  
  1319. Sie haben verschiedene Möglichkeiten, zwei Programme gegeineinander
  1320. kämpfen zu lassen.  Die Schlacht findet natürlich immer im MARS
  1321. Speicherfeld mit seinen 8000 Zellen statt, aber Sie können beliebige
  1322. Kombinationen von drei verschiedenen Anzeigemodi auswählen.  Diese drei
  1323. Modi dienen dazu, den Zustand des Speicherfeldes, die Anzahl Tasks der
  1324. Programme, die gerade bearbeiteten Anweisungen und vieles mehr
  1325. anzuzeigen. 
  1326.  
  1327. Die Anzahl der Ausführungszyklen, bis ein Kampf für unentschieden
  1328. erklärt wird, kann ebenfalls geändert werden.  Laut "Core War Standards"
  1329. sind es 10000 Schritte für jedes Programm.  Weil sich dieser Wert
  1330. unserer Ansicht nach eher an der unteren Grenze befindet, kann er erhöht
  1331. oder vermindert werden und ist als Anfangswert bei Amiga - Core Wars auf
  1332. 20000 Zyklen gesetzt.
  1333.  
  1334.  
  1335. 2.5.1 Auswählen der Anzeigemodi
  1336. -------------------------------
  1337.  
  1338. Es gibt wie gesagt deren drei: Grafik, Status und Einzelschritt
  1339. (Zeitlupe).  Wenn Sie sich im Menustreifen "Optionen" umschauen, sehen
  1340. Sie die Punkte "Grafik", "Status" und "Trace".  "Trace" ist englisch und
  1341. steht für Zeitlupe: Eine Anzeige, mit deren Hilfe Sie die
  1342. Programmausführung verlangsamen und im Einzelschritt die beiden
  1343. Kampfprogramme verfolgen können.  Jede dieser Optionen können Sie durch
  1344. einfaches Anwählen durch die Maus ein- oder ausschalten.  Diese zwei
  1345. Zustände werden durch den jeweiligen Haken vor dem Menupunkt bestimmt:
  1346. Wenn der Haken erscheint, ist die Option eingeschaltet, wenn kein Haken
  1347. vorhanden ist, ist sie ausgeschaltet. 
  1348.  
  1349.  
  1350. 2.5.2 Zyklen
  1351. ------------
  1352.  
  1353. Der vierte Punkt im Menustreifen "Optionen" ist "Zyklen".  Dadurch
  1354. können Sie bestimmen, wieviele Instruktionen jedes Programmes ausgeführt
  1355. werden sollen, bis ein Unentschieden eintritt.  Wenn Sie diesen
  1356. Menupunkt anwählen, fragt Core Wars nach der Anzahl Zyklen.  Der Wert,
  1357. der angezeigt wird, stellt die gerade wirksame Anzahl der Zyklen dar. 
  1358. Diese beträgt nach jedem Neustart von Core Wars 10000.  Tippen Sie dann
  1359. eine beliebige Zahl zwischen eins und 99999 ein und klicken Sie nun mit
  1360. der Maus in das OK-Gadget. 
  1361.  
  1362.  
  1363. 2.5.3 Starten eines Kampfes
  1364. ---------------------------
  1365.  
  1366. Das Starten eines Kampfes geht immer gleich vor sich: Sie rufen aus dem
  1367. Menustreifen "Action" den Punkt "Kampf" auf.  Anschliessend erscheint
  1368. ein grosser Textrequester, in den Sie die Namen von zwei Kampfprogrammen
  1369. eingeben sollen.  Klicken Sie dazu mit der Maus in einen der beiden
  1370. Balken und Tippen Sie den Pfadnamen eines assemblierten
  1371. Redcode-Programmes, z.  B.  "Beispiele/Mice.prg" (Endung .prg nicht
  1372. vergessen) ein.  Klicken Sie in den anderen Balken und wiederholen Sie
  1373. die Eingabe mit einem anderen Namen, z.B.  "Beispiele/Gnom.prg".  Nun
  1374. können Sie die Eingaben mit einem Klicken in das OK-Gadget bestätigen
  1375. oder durch das ABBRUCH-Gadget den Kampf abbrechen. 
  1376.  
  1377. Wenn Sie "OK" gewählt haben, geht"s los.  Zuerst werden die beiden
  1378. Programme eingelesen, dann beginnt der Kampf.  Je nachdem, welche
  1379. Anzeigemodi Sie eingeschaltet haben, erscheinen mehr oder weniger
  1380. Fenster, die die gewünschten Informationen zum Kampfgeschehen enthalten:
  1381. Die Grafikanzeige, die Statusanzeige und der Einzelschrittmodus. 
  1382.  
  1383. Sobald eines der Programme gewonnen hat oder ein Unentschieden
  1384. eingetreten ist (die eingestellte Anzahl der Zyklen wurde
  1385. überschritten, ohne dass eine Entscheidung stattfand), wird der Ausgang
  1386. des Kampfes angezeigt.  Sie können einen Kampf allerdings auch
  1387. vorzeitig abbrechen, indem Sie das Abbruch-Gadget mit der Maus
  1388. anklicken.  Dieses Gadget erscheint immer im oberen Teil des
  1389. Bildschirmes über allen anderen Anzeigen, sobald ein Kampf gestartet
  1390. wurde. 
  1391.  
  1392. Der Ausgang des Kampfes wird ebenfalls mit einem Gadget angezeigt.  Sie
  1393. können irgendwo in diesen Textkasten hineinklicken, um schneller
  1394. zurück ins Hauptprogramm zu gelangen.  Anschliessend fragt Core Wars
  1395. nach, ob gleich ein weiterer Kampf gestartet werden soll.  Wenn Sie "ja"
  1396. anwählen, können Sie sofort die Namen von zwei neuen Kampfprogrammen
  1397. eingeben und weitermachen.  Mit "nein" kommen Sie entgültig ins
  1398. Hauptprogramm zurück. 
  1399.  
  1400.  
  1401. 2.6 Die Statusanzeige
  1402. ---------------------
  1403.  
  1404. Sie dient dazu, einen Ueberblick über die Anzahl der abgearbeiteten
  1405. Zyklen (Programmschritte) und der Tasks der Programme zu erhalten. 
  1406. Ferner ist die Statusanzeige auch nützlich, wenn Sie gleichzeitig den
  1407. Einzelschrittmodus eingeschaltet haben: Sie sehen dann die aktuelle
  1408. Adresse und den aktuellen Task jedes Programmes.  Abbildung 1 zeigt den
  1409. Status und den Einzelschrittmodus, wie sie auf dem Bildschirm
  1410. erscheinen.  Ganz oben sehen Sie die Namen der beiden Programme
  1411. eingeblendet, dazwischen ist das Abbruch-Gadget.  Im Fenster mit dem
  1412. Titel "Core Wars - Status" sind links und rechts zwei senkrechte Balken
  1413. gezeichnet, die grafisch wiedergeben, wieviele Tasks jedes Programmes zu
  1414. diesem Zeitpunkt laufen.  Die genaue Zahl steht jeweils rechts und links
  1415. daneben: für "mice.prg" sind es hier 27, für "gnom.prg" läuft nur ein
  1416. Task.  "Anzahl Zyklen" (oben Mitte) bedarf wohl keiner näheren Erklärung
  1417. mehr.  "aktuelle Adresse" und "aktueller Task" gibt jeweils die Nummer
  1418. der gerade ausgeführten Speicherzelle im MARS-Speicherfeld und die
  1419. Nummer des dazugehörigen Tasks an.  Wenn Sie die Programme nicht mit dem
  1420. Einzelschrittmodus angehalten haben, wechseln die einzelnen Zahlen im
  1421. Statusfenster sehr schnell. 
  1422.  
  1423.  
  1424. 2.7 Die Grafikanzeige
  1425. ---------------------
  1426.  
  1427. Die grafische Darstellung des ganzen MARS-Speichers ist zweifellos
  1428. eines der interessantesten Features des Core Wars.  Sie können dadurch
  1429. hautnah mitverfolgen, welche Verwüstungen die Kampfprogramme im
  1430. Speicher anrichten, und welche der beiden Parteien die bessere Taktik
  1431. anwendet.  Es ist faszinierend, dabei zuzusehen, wie sich in einem Kampf
  1432. zwischen "mice" und "Mausefalle" die Mäusetasks hemmungslos vermehren,
  1433. um schliesslich doch nach und nach in die Fallen des Mäusefängers zu
  1434. tappen. 
  1435.  
  1436. Die Grafikanzeige besteht am Anfang aus einem grossen schwarzen
  1437. Rechteck, das für das gesamte MARS-Speicherfeld steht.  Es setzt sich
  1438. aus 100 Zeilen zu 80 Punkten = 8000 Zellen zusammen, die mit der Zeit je
  1439. nach Verlauf eines Kampfes verschieden gefärbt werden.  Dabei stehen die
  1440. Farben für bestimmte Operationen, die mit der betroffenen
  1441. Speicherzelle angestellt wurden. 
  1442.  
  1443. Jeder der beiden Konkurrenten in einem Kampf erhält eine der beiden
  1444. Farben Rot und Grün zugeordnet.  Diese Farben werden bei der Anzeige der
  1445. Programmnamen ganz oben im Bildschirm gezeigt.  Das linke (zuerst
  1446. eingegebene) Programm ist das Grüne, das rechte ist das Rote.  Ein
  1447. dunkelgrüner oder dunkelroter Farbpunkt im Grafikfenster steht für eine
  1448. Speicherzelle, die vom betreffenden Programm verändert wurde.  Ein
  1449. hellgrüner oder hellroter Farbpunkt steht dagegen für eine Zelle, die
  1450. schon von der jeweiligen Partei als Programmschritt ausgeführt wurde. 
  1451. Man kann mit anderen Worten auch sagen, dass ein heller Farbton für eine
  1452. Zelle steht, die von einem Programmzeiger überstrichen wurde. 
  1453.  
  1454.  
  1455.  
  1456. 2.8 Die Zeitlupe (Trace)
  1457.  
  1458. Nur wenige Redcode-Programme laufen gleich auf Anhieb fehlerfrei.  Hier
  1459. hilft die Einzelschritt-Option "Trace" weiter: Sie können den Ablauf
  1460. eines Kampfprogrammes Schritt für Schritt, also gewissermassen in
  1461. Zeitlupe, verfolgen.  In der Abbildung 2 ist das Einzelschrittfenster
  1462. dargestellt.  Sie können dort zwei Gadgets namens "Schritt" und "Start"
  1463. erkennen.  Links und rechts daneben befinden sich zwei Kästen, in denen
  1464. ein Ausschnitt des jeweiligen Redcode-Programmes im Klartext aufgelistet
  1465. wird.  Wir nennen diese Kästen die Listfenster, den sich darin
  1466. befindenden Text das disassemblierte (zurückübersetzte)
  1467. Redcode-Programm. 
  1468.  
  1469. Nach dem Beginn eines Kampfes mit eingeschaltetem Einzelschrittmodus
  1470. passiert erst mal gar nichts.  Vom linken (grünen) Kampfprogramm werden
  1471. sieben Zeilen entschlüsselt und im entsprechenden Fenster angezeigt. 
  1472. Die mittlere, grün gedruckte Zeile ist die aktuelle Programmzeile, die
  1473. soeben ausgeführt wurde.  Alle Veränderungen, die diese Zeile im
  1474. MARS-Speicher hervorgerufen hat, werden im Listing schon berücksichtigt. 
  1475.  
  1476. Wenn Sie jetzt mit der Maus das Schritt-Gadget anklicken, wird die
  1477. hervorgehobene Zeile ausgeführt und anschliessend füllt sich auch das
  1478. rechte Listfenster mit dem disassemblierten Programmtext des roten
  1479. Programmes.  Die rot angezeigte Zeile im Listing wurde soeben durch die
  1480. Betätigung des Schritt-Gadgets ausgeführt, und der ganze Vorgang beginnt
  1481. wieder von vorne.  Sie können sich auf diese Weise mit einzelnen
  1482. Schritten durch die beiden Programme durcharbeiten.  Wenn Sie mehrere
  1483. Schritte auf einmal zurücklegen wollen, können Sie das Start-Gadget
  1484. anwählen: Bis zur nächsten Betätigung von Start, Schritt (oder Abbruch)
  1485. wird der Kampf ohne Unterbrechung automatisch fortgeführt.  Dabei werden
  1486. die aktuellen Programmschritte natürlich nicht mehr im Klartext
  1487. angezeigt, weil dies den Kampf unnötig verzögern würde. 
  1488.  
  1489. Mit den Listfenstern können auch beliebige Teile des MARS-Speichers
  1490. disassembliert werden.  Dazu dienen die vier Pfeile links und rechts
  1491. neben den Schritt/Start-Gadgets.  Durch Anklicken der Pfeile kann im
  1492. Speicherfeld nach oben oder unten gewandert werden: Mit dem linken
  1493. Pfeilpaar von der Position des grünen Programmzeigers aus, mit dem
  1494. rechtem Paar vom roten Zeiger aus.  Eine schnellere Möglichkeit, das
  1495. Listfenster zu positionieren, bietet sich durch die Grafikanzeige.  Wenn
  1496. Sie im Schritt-Modus den Mauszeiger in dieser Grafik an eine beliebige
  1497. Stelle setzen und einmal die linke Maustaste drücken, ist die Position
  1498. registriert.  Betätigen Sie nun einen der Pfeile, um den gewählten
  1499. Ausschnitt im Listfenster anzuzeigen.  Welches der beiden Fenster
  1500. verwendet wird, hängt von folgenden Punkten ab:
  1501.  
  1502.      o    Wenn der Mauszeiger auf eine grüne (hell oder dunkel) 
  1503.           Speicherzelle gesetzt wurde, erscheint der disassemblierte 
  1504.           Speicherbereich im linken Listfenster.
  1505.      o    Bei einer roten Zelle wird das rechte Listfenster verwendet.
  1506.      o    Bei einer schwarzen Zelle wird wieder im linken (grünen) 
  1507.           Fenster angezeigt.
  1508.      o    Wenn zwei Punkte nacheinander angeklickt werden (rot, grün 
  1509.           oder schwarz), werden beide Fenster verwendet.
  1510.  
  1511. Die Pfeile und die Positionierung per Maus ist unwirksam, sobald der
  1512. Kampf mit dem Start-Gadget fortgeführt wird.  Unabhängig vom
  1513. disassemblierten Speicherbereich befinden sich die beiden Programmzeiger
  1514. immer noch auf derselben Stelle, an der sie beim letzten Anhalten der
  1515. Ausführung waren. 
  1516.  
  1517.  
  1518.  
  1519.  
  1520. 2.9 Fehlermeldungen des Assemblers
  1521. __________________________________
  1522.  
  1523.  
  1524. Während des Assemblierens eines Redcode-Quelltextes können verschiedene
  1525. Assemblierfehler auftreten, die durch einen falsch aufgebauten Quelltext
  1526. hervorgerufen werden.  Sobald ein solcher Fehler gefunden wird, wird das
  1527. Assemblieren abgebrochen und in einem Textrequester eine Fehlernummer,
  1528. eine Beschreibung des Fehlers im Klartext und wenn immer möglich die
  1529. Programmzeile, in der der Fehler gefunden wurde, angezeigt.  Hier folgt
  1530. nun eine Liste aller Fehlernummern mit den entsprechenden Beschreibungen
  1531. und mit Hinweisen, wie die Fehler behoben werden können.  Das Zeichen
  1532. "#" ersetzt die Zeilennummer, die normalerweise angezeigt würde. 
  1533.  
  1534.  
  1535. Fehler Nr. 0
  1536.  
  1537. Meldung:       Funktion konnte erfolgreich beendet werden.
  1538. Beschreibung:  Vorgesehen für den normalen Verlauf einer Assemblierung, 
  1539.                wird jedoch nicht mehr verwendet.
  1540.  
  1541.  
  1542. Fehler Nr. 1
  1543.  
  1544. Meldung:       Es werden zuviele Symbole definiert. Letztes Symbol in 
  1545.                Zeile #.
  1546. Beschreibung:  Der Assembler erlaubt höchstens 30 verschiedene Symbole 
  1547.                in einem Redcode-Programm. Wenn die Anzahl überschritten 
  1548.                wird, erscheint diese Fehlermeldung mit der Zeile, in der
  1549.                das 31. Symbol definiert wurde.
  1550. Abhilfe:       Beissen Sie in den sauren Apfel und ersetzen Sie die 
  1551.                überzähligen Symbole durch die entsprechenden Zahlenwerte.
  1552.  
  1553.  
  1554. Fehler Nr. 2
  1555.  
  1556. Meldung:       In Zeile # wird ein Symbol benutzt, das nicht definiert 
  1557.                wurde.
  1558. Beschreibung:  Der Wert eines Symbols wird in einer Anweisung benötigt, 
  1559.                das Symbol wird jedoch im gesamten Programm nicht 
  1560.                definiert (Es besitzt keinen Wert).
  1561. Abhilfe:       Meistens handelt es sich hier um einen simplen Tippfehler
  1562.                in einem Symbol. Wenn dies nicht der Fall ist, haben Sie 
  1563.                es versäumt, das bewusste Symbol zu definieren. Beachten 
  1564.                Sie, dass bei einer Definition das Symbol ganz am linken 
  1565.                Rand einer Zeile beginnen muss.
  1566.  
  1567.  
  1568. Fehler Nr. 3
  1569.  
  1570. Meldung:       Ein Argument des Befehls in Zeile # ist zu lange.
  1571. Beschreibung:  Die Maximallänge eines Argumentes für einen Redcode-
  1572.                Befehl ist auf vierzig Zeichen begrenzt.    Diese Länge 
  1573.                versteht sich auch auf einen ganzen Ausdruck, der 
  1574.                mehrere Symbole enthalten kann.
  1575. Abhilfe:       Versuchen Sie, sich auf kürzere Symbole zu beschränken, 
  1576.                vor allem dann, wenn komplizierte Ausdrücke als 
  1577.                Befehlsargumente verwendet werden.
  1578.  
  1579.  
  1580. Fehler Nr. 5
  1581.  
  1582. Meldung:       In Zeile # wird ein nicht erlaubter Operator verwendet.
  1583. Beschreibung:  Als Operatoren sind nur die beiden Zeichen für Addition 
  1584.                und Subtraktion, also "+" und "-", erlaubt.
  1585. Abhilfe:       Beachten Sie, dass der Redcode Assembler die Zeichen für 
  1586.                Multiplikation und Division ("*" und "/") nicht kennt. 
  1587.                Versuchen Sie, den fraglichen Ausdruck nur mit "+" und 
  1588.                "-" zu formulieren.
  1589.  
  1590.  
  1591. Fehler Nr. 6
  1592.  
  1593. Meldung:       In Zeile # wird ein Operator falsch verwendet.
  1594. Beschreibung:  Fehler in der Schreibweise eines Ausdruckes.
  1595. Abhilfe:       Die Zeichen "+" und "-" dürfen nur in Form von Vorzeichen
  1596.                oder als Operator zwischen zwei Symbolen verwendet werden.
  1597.  
  1598.  
  1599. Fehler Nr. 7
  1600.  
  1601. Meldung:       Ein Allgemeiner Fehler der Befehlssyntax tritt in Zeile #
  1602.                auf.
  1603. Beschreibung:  Dieser Fehler kann in vielen Fällen auftreten und ist in 
  1604.                einer allgemeinen Form nicht näher beschreibbar.
  1605. Abhilfe:       Fehlerhafte Zeile auf Tippfehler überprüfen.
  1606.  
  1607.  
  1608. Fehler Nr. 8 und Nr. 9
  1609.  
  1610. Meldung:       Der Befehl in Zeile Nr. # benötigt weniger Argumente als 
  1611.                vorhanden sind.
  1612. oder:           Der Befehl in Zeile Nr. # benötigt mehr Argumente, als 
  1613.                vorhanden sind.
  1614. Beschreibung:  Zu einem Befehl sind entweder zuviele oder zu wenige 
  1615.                Argumente vorhanden.
  1616. Abhilfe:       Der Assembler erwartet als Trennzeichen zwischen zwei 
  1617.                Argumenten ein Komma. Wenn Sie ein älteres Redcode-
  1618.                Programm abtippen, kann es sein, dass anstelle von Kommas
  1619.                nur Zwischenräume als Trennzeichen verwendet wurden. 
  1620.                Weil unser Assembler Zwischenräume in den Argumenten 
  1621.                selbst erlaubt (z. B. zwischen den Operatoren), mussten
  1622.                wir ein eindeutiges Trennzeichen wählen: das Komma.
  1623.  
  1624.  
  1625. Fehler Nr. 10
  1626.  
  1627. Meldung:       In Zeile # ist bei den Argumenten ein Kommafehler
  1628.                aufgetreten.
  1629. Beschreibung:  In dieser Zeile wurde ein Komma falsch angewendet.
  1630. Abhilfe:       Sie verwenden mehr als ein Komma als Trennzeichen, 
  1631.                es handelt sich meist um einen normalen Tippfehler.
  1632.  
  1633.  
  1634. Fehler Nr. 11
  1635.  
  1636. Meldung:       Zeile # enthält keinen gültigen Redcode-Befehl.
  1637. Beschreibung:  Jede Zeile eines Quelltextes, die keine reine 
  1638.                Kommentarzeile ist, muss eine gültige Redcodeanweisung 
  1639.                enthalten.
  1640. Abhilfe:       Entweder wurde eine Kommentarzeile nicht durch ein
  1641.                führendes Semikolon (;) gekennzeichnet oder der Befehl 
  1642.                in dieser Zeile wurde nicht grossgeschrieben.
  1643.  
  1644.  
  1645. Fehler Nr. 12
  1646.  
  1647. Meldung:       In Zeile # wird eine Sprungadresse unmittelbar 
  1648.                angegeben.
  1649. Beschreibung:  Der Befehl JMP (springen) darf nicht unmittelbar
  1650.                adressiert werden.
  1651. Abhilfe:       Weil ein Redcode-Programm nicht herausfinden darf, an 
  1652.                welche Stelle im Speicher es geladen wurde, ist es
  1653.                verboten, eine Zieladresse des JMP-Befehls unmittelbar 
  1654.                anzugeben. Verwenden Sie eine der Adressierungen direkt, 
  1655.                indirekt oder indirekt inkrement.
  1656.  
  1657.  
  1658. Fehler Nr. 13
  1659.  
  1660. Meldung:       In Zeile # wird die MOV-Zieladresse unmittelbar angegeben.
  1661. Beschreibung:  Das zweite Argument von MOV darf nicht unmittelbar 
  1662.                adressiert werden.
  1663. Abhilfe:       Siehe Nr. 12.
  1664.  
  1665.  
  1666. Fehler Nr. 14
  1667.  
  1668. Meldung:       Zeile # enthält mehr als einen Redcode-Befehl.
  1669. Beschreibung:  Eine Zeile des Quelltextes darf nur eine Anweisung 
  1670.                enthalten.
  1671. Abhilfe:       Teilen Sie die fehlerhafte Linie in zwei    Programmzeilen auf.
  1672.  
  1673.  
  1674. Fehler Nr. 15
  1675.  
  1676. Meldung:       In Zeile # wird die SPL-Zieladresse unmittelbar 
  1677.                angegeben.
  1678. Beschreibung:  Die Zieladresse von SPL (split) darf nicht unmittelbar 
  1679.                adressiert sein.
  1680. Abhilfe:       Siehe Nr. 12.
  1681.  
  1682.  
  1683. Fehler Nr. 16
  1684.  
  1685. Meldung:       In Zeile # wird ein Symbol zum zweiten Mal definiert.
  1686. Beschreibung:  Ein Symbol darf nur einmal ganz am Beginn einer 
  1687.                Programmzeile stehen.
  1688. Abhilfe:       Wenn ein unbekanntes Wort am Beginn einer Programmzeile 
  1689.                steht, nimmt der Assembler an, dass es als Sprungmarke 
  1690.                eingesetzt werden soll und weist ihm den Wert dieser Zeile
  1691.                zu (das Symbol wird definiert). Ein Symbol kann jedoch nur
  1692.                einen Wert enthalten, deshalb erscheint diese Fehlermeldung
  1693.                bei einer weiteren definition einer Sprungmarke mit diesem
  1694.                Namen. Ersetzen Sie eine der beiden Definitionen mit einem
  1695.                anderen Namen.
  1696.  
  1697.  
  1698. Fehler Nr. 17
  1699.  
  1700. Meldung:       Ich kann keine Datei mit dem angegebenen Namen finden. 
  1701.                Pfadname prüfen.
  1702. Beschreibung:  Der Quellcode ist nicht unter diesem Namen auf der
  1703.                Diskette vorhanden.
  1704. Abhilfe:       Sehen Sie sich die entsprechende Diskette mit der Workbench
  1705.                an, indem Sie jede Schublade (Directory, Verzeichnis) durch
  1706.                einen Doppelklick mit der Maus öffnen.  Für jeden Quellcode
  1707.                und für jedes schon übersetzte Programm erscheint ein Icon.
  1708.                Wenn Sie die bewusste Quelldatei gefunden haben, können Sie
  1709.                diese durch doppeltes Anklicken ansehen.
  1710.  
  1711.  
  1712. Fehler Nr. 18
  1713.  
  1714. Meldung:       Ein nicht näher beschreibbarer Diskettenfehler ist 
  1715.                eingetreten.
  1716. Beschreibung:  Eine Datei (Programm, Text oder Einstellung) kann nicht 
  1717.                ordnungsgemäss von Diskette eingelesen oder abgespeichert
  1718.                werden.
  1719. Abhilfe:       Der Grund kann (unter anderem) eine defekte Diskette sein.
  1720.                In diesem Falle sollten Sie den "DiskDoctor", ein 
  1721.                Hilfsprogramm des CLI, benützen. Ebenfalls eine mögliche 
  1722.                Ursache ist ein Bedienungsfehler, z. B. das Entfernen der
  1723.                Diskette während dem Schreiben oder Lesen von Daten.
  1724.  
  1725.  
  1726. Fehler Nr. 19
  1727.  
  1728. Meldung:       Die Diskette hat keinen freien Speicherplatz mehr.
  1729. Beschreibung:  Eine Datei (Programm, Text oder Einstellung) konnte nicht
  1730.                abgespeichert werden, weil die Diskette fast voll war.
  1731. Abhilfe:       Um Platz zu schaffen, können Sie alte Dateien, die Sie 
  1732.                nicht mehr oft benützen, auf eine zweite Diskette 
  1733.                umkopieren. Löschen Sie anschliessend die kopierten 
  1734.                Dateien und wiederholen Sie den Versuch, die Daten 
  1735.                abzuspeichern.
  1736.  
  1737.  
  1738. Fehler Nr. 20
  1739.  
  1740. Meldung:       Die Textzeile # im Quelltext ist zu lange.
  1741. Beschreibung:  Der Assembler kann Zeilen bis zu einer Länge von 77 
  1742.                Zeichen bearbeiten. Wenn eine Zeile eines Redcode- 
  1743.                Programmes länger ist, erscheint diese Fehlermeldung 
  1744.                und der Assembliervorgang wird abgebrochen.
  1745. Abhilfe:       Dieser Fehler tritt nicht auf, wenn Sie zum Schreiben 
  1746.                Ihrer Programme den Redcode-Editor verwenden. Wenn Sie 
  1747.                einen anderen Editor (z.B. den CLI-Editor ED) verwenden, 
  1748.                müssen Sie darauf achten, dass keine Programmzeile länger
  1749.                als 77 Zeichen wird. Diese Zahl ist nicht willkürlich
  1750.                gewählt, sondern sie ergibt sich aus der Anzahl Zeichen, 
  1751.                die auf einem umrandeten Bildschirm dargestellt werden 
  1752.                können. Wer seine Kampfprogramme mit einer 
  1753.                Textverarbeitung schreibt, sollte den fertigen 
  1754.                Programmtext im ASCII-Modus abspeichern (Die meisten 
  1755.                Textverarbeitungen bieten diese Funktion).
  1756.  
  1757.  
  1758. Fehler Nr. 21
  1759.  
  1760. Meldung:       Der Quelltext besitzt mehr Zeilen, als ich bearbeiten kann.
  1761. Beschreibung:  Der Assembler kann nur Redcode-Programme mit einer Länge 
  1762.                von bis zu 400 ausführbaren Zeilen übersetzen.
  1763. Abhilfe:       Die gibt es nicht. Ein Redcode-Programm darf nicht mehr 
  1764.                als 400 Befehle enthalten. Unser Editor erlaubt
  1765.                Textlängen von bis zu 400 Zeilen, davon darf jede eine
  1766.                ausführbare Anweisung enthalten.
  1767.  
  1768.  
  1769. Fehler Nr. 22
  1770.  
  1771. Meldung:       Der Speicher des Amiga ist voll.
  1772. Beschreibung:  Der Assembler benötigt Speicherplatz, um ein Programm zu 
  1773.                übersetzen - in diesem Fall sogar mehr, als das System 
  1774.                zu bieten hat.
  1775. Abhilfe:       Wenn Sie zusätzlich zu Core Wars noch andere Programme 
  1776.                laufen lassen, ist es möglich, dass der Speicher nicht 
  1777.                ausreicht. Stoppen Sie dann das andere Programm, um mehr 
  1778.                freie Bytes zu bekommen. Wenn nur Core Wars alleine läuft,
  1779.                sollten Sie diese Fehlermeldung eigentlich nicht zu sehen
  1780.                bekommen (Core Wars läuft auf allen Amigas mit mindestens
  1781.                512 KB RAM und einem Floppy).
  1782.  
  1783.  
  1784. Fehler Nr. 23
  1785.  
  1786. Meldung:       Die eingelesene Datei bietet keine verwertbaren 
  1787.                Redcode-Befehle.
  1788. Beschreibung:  Ein Quelltext eines Redcode-Programmes muss mindestens 
  1789.                einen Befehl enthalten.
  1790. Abhilfe:       Haben Sie die Befehle klein geschrieben? Der Assembler 
  1791.                erkennt nur Befehle in Grossbuchstaben. Wenn ein Befehl 
  1792.                jedoch ganz am Beginn einer Zeile steht hilft alles 
  1793.                nichts: er wird dann als Symbol betrachtet. In solchen 
  1794.                Fällen hilft die Funktion "Syntax Check" des Redcode-
  1795.                Editors.
  1796.  
  1797.  
  1798. Fehler Nr. 24
  1799.  
  1800. Meldung:       In Zeile # wird ein Symbol mit zuvielen Zeichen verwendet.
  1801. Beschreibung:  Der Assembler kann sich nur Symbole mit bis zu 40 Zeichen
  1802.                merken.
  1803. Abhilfe:       Hier bleibt nur der Weg, den zu langen Symbolnamen durch 
  1804.                einen kürzeren zu ersetzen.
  1805.  
  1806.  
  1807. Fehler Nr. 25
  1808.  
  1809. Meldung:       In Zeile # ist ein Argument zu kurz oder unvollständig.
  1810. Beschreibung:  Der Ausdruck für ein Argument kann nicht ausgerechnet 
  1811.                werden, weil ein Fehler im Aufbau des Ausdrucks vorliegt.
  1812. Abhilfe:       Meistens handelt es sich um Tippfehler. Die Operatoren 
  1813.                verlangen (sofern es keine Vorzeichen sind) immer zwei 
  1814.                Werte als Operanden, die links und rechts des Operator- 
  1815.                zeichens stehen müssen.
  1816.  
  1817.  
  1818. Fehler Nr. 26
  1819.  
  1820. Meldung:       In Zeile # wird das Resultat des Ausdruckes unzulässig 
  1821.                gross.
  1822. Beschreibung:  Vorgesehen für einen Ueberlauf (zu grosse Zahlen) während
  1823.                der Berechnung eines Ausdruckes. Der Fehler wird aber
  1824.                schon vom Assembler aufgefangen, indem er alle Zahlen, 
  1825.                die grösser als 8000 werden, mit dieser Formel verkürzt: 
  1826.                n = Rest von n / 8000. (in Basic etwa: 
  1827.                n = n - int(n / 8000) * 8000).     
  1828.                Lange Rede, kurzer Sinn: Sie werden Fehler. Nr. 26 nicht 
  1829.                antreffen.
  1830.  
  1831.  
  1832. Fehler Nr. 27
  1833.  
  1834. Meldung:       Eine Adressierungsart in Zeile # passt nicht zum 
  1835.                verwendeten Befehl.
  1836. Beschreibung:  Nicht für alle Redcode-Befehle sind alle Adressierungen 
  1837.                erlaubt.
  1838. Abhilfe:       In der Befehlsbeschreibung in Kapitel eins, Abschnitt 
  1839.                1.4, sind alle erlaubten Adressierungsarten erklärt. 
  1840.                Eine Zusammenfassung dieser Seiten finden Sie in 
  1841.                Kapitel 3, Abschnitt 3.3.4 in Form einer Befehlstabelle.
  1842.  
  1843.  
  1844. Fehler Nr. 28
  1845.  
  1846. Meldung:       Der Name der Programmdatei ist länger als 80 Zeichen.
  1847. Beschreibung:  Der Assembler (auch der Redcode-Editor) kann keine 
  1848.                Dateinamen entgegennehmen, die länger als 80 Zeichen sind.
  1849. Abhilfe:       Hier können Sie nur eines machen: Verwenden Sie (auch im 
  1850.                Sinne der Uebersichtlichkeit) kürzere Dateinamen.
  1851.  
  1852.  
  1853.  
  1854. 2.10 Fehlermeldungen von MARS
  1855. -----------------------------
  1856.  
  1857. Auch während eines Kampfes zwischen zwei Redcode-Programmen können
  1858. verschiedene Fehler auftreten.  Diese sind jedoch in der Regel sehr
  1859. selten und meistens eine Folge von Veränderungen eines schon
  1860. assemblierten, ausführbaren Kampfprogrammes durch einen Diskettenmonitor
  1861. oder ähnliches.  Eine MARS-Fehlermeldung deutet deshalb oft auf eine
  1862. nach der Assemblierung veränderte Programmdatei hin, sei es nun
  1863. mutwillig oder durch eine fehlerhafte Diskette.  Eine Ausnahme ist der
  1864. Fehler "Keine Objektdatei".  Er kann auch dann auftreten, wenn anstelle
  1865. eines Kampfprogrammes ein noch nicht übersetzter Quelltext ausgeführt
  1866. werden soll, z.  B.  wenn Sie die Endung ".prg" beim Wählen eines
  1867. Kampfprogrammes nicht eingegeben haben.  Hier folgt eine Liste aller
  1868. Fehlermeldungen, die bei einem Kampf auftreten können.  Zu der
  1869. jeweiligen Fehlernummer ist die Meldung im Klartext und eine Erklärung
  1870. des Fehlers aufgeführt. 
  1871.  
  1872.  
  1873. Fehler Nr. 1
  1874.  
  1875. Meldung:       Illegaler Opcode im Programm
  1876. Beschreibung:  Ein bereits übersetztes Programm enthält eine Anweisung,
  1877.                die der MARS-Simulation nicht bekannt ist. 
  1878. Abhilfe:       Hier muss ein Diskettenfehler vorliegen. Der Assembler 
  1879.                kann nur Opcodes erzeugen, die MARS versteht. Assemblieren
  1880.                Sie den Programmtext neu und versuchen Sie einen neuen 
  1881.                Kampf.
  1882.  
  1883.  
  1884. Fehler Nr. 2
  1885.  
  1886. Meldung:       Illegaler Adressierungsmodus
  1887. Beschreibung:  In einem bereits übersetzten Programm wird eine nicht 
  1888.                erlaubte Adressierungsart verwendet.
  1889. Abhilfe:       Der Assembler kann wie bei Fehler Nr. 1 nur erlaubte 
  1890.                Adressierungsarten erzeugen. Massnahme siehe Fehler Nr. 1.
  1891.  
  1892.  
  1893. Fehler Nr. 3
  1894.  
  1895. Meldung:       Ueberlauf in einer MARS-Zelle
  1896. Beschreibung:  Ein ausführbares Programm enthält Argumente, die grösser 
  1897.                sind, als das MARS-Speicherfeld Zellen enthält: 8000.
  1898. Abhilfe:       Der Redcode-Assembler kann nur Argumente erzeugen, die 
  1899.                kleiner oder gleich der grössten Adresse im MARS-Speicher
  1900.                sind. Massnahme siehe Fehler Nr. 1.
  1901.  
  1902.  
  1903. Fehler Nr. 4
  1904.  
  1905. Meldung:       Objektfile zu lang zum Einlesen
  1906. Beschreibung:  Das Kampfprogramm kann wegen Ueberlänge nicht eingelesen 
  1907.                werden.
  1908. Abhilfe:       Der Quelltext muss gekürzt und neu assembliert werden. 
  1909.                Versuchen Sie jedoch zuerst, den Quelltext unverändert neu
  1910.                zu assemblieren.
  1911.  
  1912.  
  1913. Fehler Nr. 5
  1914.  
  1915. Meldung:       Objektfile nicht gefunden
  1916. Beschreibung:  Eines der beiden Kampfprogramme konnte unter dem 
  1917.                angegebenen Namen nicht gefunden werden.
  1918. Abhilfe:       Ueberprüfen Sie den Pfadnamen und die Endung, die 
  1919.                normalerweise ".prg" sein sollte.
  1920.  
  1921.  
  1922. Fehler Nr. 6
  1923.  
  1924. Meldung:       Kein richtiges Objektfile
  1925. Beschreibung:  Bei der als Kampfprogramm angegebenen Datei handelt es 
  1926.                sich nicht um ein zuvor assembliertes Programm.
  1927. Abhilfe:       Der MARS-Simulator hat zwar die Datei gefunden, die Sie 
  1928.                gewählt haben, diese ist jedoch nicht ausführbar. Haben
  1929.                Sie an die Endung ".prg" gedacht?
  1930.  
  1931.  
  1932. Fehler Nr. 7
  1933.  
  1934. Meldung:       Kampf durch Operator abgebrochen
  1935. Beschreibung:  Ein Kampf wurde durch Anklicken des Abbruchgadgets 
  1936.                vorzeitig beendet.
  1937. Abhilfe:       Keine eigentliche Fehlermeldung.
  1938.  
  1939.  
  1940. Fehler Nr. 8
  1941.  
  1942. Meldung:       Kein Speicher verfügbar
  1943. Beschreibung:  MARS bekommt vom Betriebssystem für das 8000 Zellen 
  1944.                umfassende Speicherfeld nicht genügend freien RAM-Speicher.
  1945. Abhilfe:       Wenn zusätzlich zu Core Wars noch andere Programme auf 
  1946.                Ihrem Amiga laufen, kann es zu Speichermangel kommen. 
  1947.                Wenn dies eintritt, sollten Sie alle anderen,
  1948.                gleichzeitig laufenden Programme beenden. Wenn Core Wars 
  1949.                aber alleine einen 512 KByte-Amiga zur Verfügung hat, 
  1950.                sollte dieser Fehler nicht auftreten. Amiga-Intern benötigt
  1951.                eine MARS-Zelle 7 Bytes, das ganze Speicherfelde deshalb 
  1952.                56000 Bytes. Im Titelbalken der Workbench wird der freie
  1953.                Speicher dauernd angezeigt, Sie können so ungefähr 
  1954.                abschätzen, wieviel Speicher noch fehlt.
  1955.  
  1956.  
  1957.  
  1958. 2.10.1 Fehlender Speicherplatz
  1959. ------------------------------
  1960.  
  1961. Es kann auf 512-KByte Amigas vorkommen, dass zuwenig Speicher zur
  1962. Verfügung steht, wenn ein neues Fenster (z.B. der Editor) geöffnet
  1963. werden soll. Core Wars versucht dann automatisch, die Workbench zu
  1964. schliessen, so dass nur noch der Core Wars Bildschirm vorhanden ist.
  1965. Wenn im Workbench-Bildschirm noch Fenster geöffnet sind, sollten diese
  1966. unbedingt mit der Maus geschlossen werden. Auch gleichzeitig laufende
  1967. Programme müssen gestoppt und verlassen werden, um mehr Speicher zu
  1968. erhalten. 
  1969.